Given a binary array, find the maximum number of consecutive 1s in this array.
Input: [1,1,0,1,1,1] Output: 3 Explanation: The first two digits or the last three digits are consecutive 1s. The maximum number of consecutive 1s is 3.
Note:
- The input array will only contain
0
and1
. - The length of input array is a positive integer and will not exceed 10,0000
解析:求连续1的最大的个数。用一个for循环,依次扫描整个向量元素。用两个int型数据记录个数,n1,n2。n1是每个连续1的数目,n2则记录两个相邻的数目的最大值。若为1,则n1递增,若为0,则把n1,n2进行比较,将较大值交给n2,并将n1置零。用一个嵌套的while来把1之间的0间隔排除掉。最后返回max(n1,n2)。
源代码如下:
class Solution {
public:
int findMaxConsecutiveOnes(vector<int>& nums) {
int len=nums.size();
int n1=0;
int n2=0;
for(int i=0;i<len;i++)
{
if(nums[i]==1)
n1++;
else{
if(n1>n2)
n2=n1;
n1=0;
while(nums[i]==0)
i++;
i--;
}
}
if(n1>n2)
return n1;
else return n2;
}
};
public:
int findMaxConsecutiveOnes(vector<int>& nums) {
int len=nums.size();
int n1=0;
int n2=0;
for(int i=0;i<len;i++)
{
if(nums[i]==1)
n1++;
else{
if(n1>n2)
n2=n1;
n1=0;
while(nums[i]==0)
i++;
i--;
}
}
if(n1>n2)
return n1;
else return n2;
}
};