原题:力扣485 难度:easy
题目:
给定一个二进制数组 nums
, 计算其中最大连续 1
的个数。
示例 1:
输入:nums = [1,1,0,1,1,1] 输出:3 解释:开头的两位和最后的三位都是连续 1 ,所以最大连续 1 的个数是 3.
示例 2:
输入:nums = [1,0,1,1,0,1] 输出:2
分析:这里我们不难想到可以遍历一次数组,用一个变量(count)记录目前遍历连续1的个数,但是数组中可能还有0,那么可能最长连续的1的子数组在后面,于是我们在用一个变量(maxCount)来记录当前子数组中连续1最多的个数,这里有个小细节,如果遍历到最后数组元素是1的话,遍历结束后还要再次统计子数组中1最多的个数,因为很有可能最后那个1所包含的子数组是1最多的子数组,这一点在示例1中就题型出来了。那么参考代码如下:
int findMaxConsecutiveOnes(int* nums, int numsSize){
int count = 0;
int maxCount = 0;
for(int i = 0;i < numsSize;i++){
if(nums[i] == 1){
count++;
}else{
maxCount = fmax(maxCount,count);
count = 0;
}
}
maxCount = fmax(maxCount,count);
return maxCount;
}