给定一个二进制数组, 计算其中最大连续1的个数。
示例 1:
输入: [1,1,0,1,1,1]
输出: 3
解释: 开头的两位和最后的三位都是连续1,所以最大连续1的个数是 3.
注意:
- 输入的数组只包含
0
和1
。 - 输入数组的长度是正整数,且不超过 10,000。
解析:
题目非常简单,只需要一次遍历统计连续1,然后和当前连续1的最大值top进行比较就可以了。但是我发现,如果我定义的最大值为max1的时候,结果是60ms通过,如果是top是28ms通过,不知道为什么,是因为max1和函数max()比较相似吗,还请看到的大神指教。
变量定义为max1的代码:
int findMaxConsecutiveOnes(vector<int>& nums)
{
int count = 0;
int max1 = 0;
for (int i = 0; i < nums.size(); i++)
{
if (nums[i] == 1)
{
count++;
}
else
{
max1 = max(max1, count);
count = 0;
}
}
if (max1 > count)
return max1;
else
return count;
}
变量名定义为top的代码:
int findMaxConsecutiveOnes(vector<int>& nums)
{
int count = 0,top=0;
//int max1 = 0;
for (int i = 0; i < nums.size(); i++)
{
if (nums[i] == 1)
{
count++;
}
else
{
top = max(top, count);
count = 0;
}
}
if (top > count)
return top;
else
return count;
}
int findMaxConsecutiveOnes(vector<int>& nums)
{
if(nums.size()==0)
return 0;
int global=0;
int local=0;
for(int i=0;i<nums.size();i++)
{
if(nums[i]!=1)
{
local=0;
}
else
{
local++;
global=global>local?global:local;
}
}
return global;
}