给定一个二进制数组, 计算其中最大连续1的个数。
示例 1:
输入: [1,1,0,1,1,1] 输出: 3 解释: 开头的两位和最后的三位都是连续1,所以最大连续1的个数是 3.
简析:这道题主要是找出0的位置,然后算相邻0之间的间隔或者以及到两边的距离,找出最大的就可以。
class Solution {
public:
int findMaxConsecutiveOnes(vector<int>& nums) {
vector<int> ind;
if(nums.size() == 0)
return 0;
for(int i = 0;i<nums.size();i++)
{
if(nums[i] == 0)
ind.push_back(i);
}
if(ind.size() == 0)
return nums.size();
int max = ind[0];
if(ind.size() == 1)
return max > (nums.size() - ind[0]-1) ? max : (nums.size() - ind[0]-1);
else
{
for (int i = 1; i < ind.size();i++)
if(ind[i] - ind[i-1]-1 > max)
max = ind[i] - ind[i - 1]-1;
}
if(max < nums.size() - ind[ind.size() - 1]-1)
max = nums.size() - ind[ind.size() - 1]-1;
return max;
}
};