本篇博客会讲解力扣“2643. 一最多的行”的解题思路,这是题目链接。
本题的思路是:从上到下遍历二维数组,统计每一行1的个数。使用ret数组的第一个元素维护1最多的行的下标,第二个元素维护最多的1的个数。若发现某一行的1的个数比ret数组的第二个元素大,则更新ret数组。
int* rowAndMaximumOnes(int** mat, int matSize, int* matColSize, int* returnSize){
int* ret = (int*)malloc(2 * sizeof(int));
*returnSize = 2;
for (int i = 0; i < matSize; ++i)
{
// 统计一行中1的个数
int count = 0;
for (int j = 0; j < *matColSize; ++j)
{
if (mat[i][j] == 1)
{
++count;
}
}
// 维护1最多的行
if (count > ret[1])
{
ret[0] = i;
ret[1] = count;
}
}
return ret;
}
总结
统计最大值,一般使用一个变量来维护最大值,若发现比最大值大的元素,则更新最大值。
感谢大家的阅读!