一、题目
给定一个二进制数组, 计算其中最大连续1的个数。
示例 1:
输入: [1,1,0,1,1,1] 输出: 3 解释: 开头的两位和最后的三位都是连续1,所以最大连续1的个数是 3.
注意:
- 输入的数组只包含
0
和1
。 - 输入数组的长度是正整数,且不超过 10,000。
二、题解思路
- 题解思路:定义最大连续1长度为max_mum,中间转换变量为sum,遍历数组,碰到1,就sum++,当出现零时,若sum>max_mum,则将sum赋值给max_mum,同时sum置零。最后判断max_mum是否大于sum(因为有可能都是1,不执行else程序段),如sum大,则赋值给max_mum,返回max_mum******注:能手动比较比较大小的千万别用函数(好像用max就出错了)。
三、代码实现
- C++代码实现
class Solution {
public:
int findMaxConsecutiveOnes(vector<int>& nums)
{
int max_mum = 0,sum = 0;
for(int i = 0;i<nums.size();i++)
{
if(nums[i] == 1)
sum++;
else
{
if(sum > max_mum)
max_mum = sum;
sum = 0;
}
}
if(max_mum < sum)
max_mum = sum;
return max_mum;
}
};