一、题目
给定一个二进制数组 nums
, 计算其中最大连续 1
的个数。
示例 1:
输入:nums = [1,1,0,1,1,1] 输出:3 解释:开头的两位和最后的三位都是连续 1 ,所以最大连续 1 的个数是 3.
示例 2:
输入:nums = [1,0,1,1,0,1] 输出:2
二、代码
int findMaxConsecutiveOnes(int* nums, int numsSize) {
int max=0;
int test=0;
for(int i=0;i<numsSize;i++){
if(nums[i]==1){
test++;
if(test>max){
max=test;
}
}else{
test=0;
}
}
return max;
}
三、思路
遍历数组,max记录最大连续1的个数,test记录当前连续1的个数。遇到1 test自增(同时判断max与test的大小,如果test大了,就赋值给max),遇到0 test清零。这个样子可以保证每次test的连续个数可以和max比较,max一直存最大连续1的个数。最后返回max即可。
int findMaxConsecutiveOnes(int* nums, int numsSize) {
// 初始化最大连续1的数量为0
int max = 0;
// 初始化当前连续1的数量为0
int test = 0;
// 遍历数组中的每一个元素
for (int i = 0; i < numsSize; i++) {
// 如果当前元素是1
if (nums[i] == 1) {
// 增加当前连续1的数量
test++;
// 如果当前连续1的数量大于已知的最大值
if (test > max) {
// 更新最大值
max = test;
}
} else {
// 如果当前元素不是1,重置当前连续1的数量为0
test = 0;
}
}
// 返回找到的最大连续1的数量
return max;
}