LeetCode原题:
485. Max Consecutive Ones
Given a binary array, find the maximum number of consecutive 1s in this array.
Example 1:
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,000
分析:用for()循环语句找到数组内所有连续1序列并计数,将所有的计数放入一个新的数组save中,最后在save中找出最多值即可。
class Solution {
public:
int findMaxConsecutiveOnes(vector<int>& nums) {
int cnt = 0;
vector<int>save;
for (int i = 0; i != nums.size(); i++)
{
if (nums[i] == 1)
++cnt;
else{
save.push_back(cnt);
cnt = 0;
}
if(i==nums.size()-1)
save.push_back(cnt);
}
int val = save[0];
for (auto c : save)
if (c > val)
val = c;
return val;
}
};
另一种简洁代码:一个for循环加上条件判断语句
class Solution {
public:
int findMaxConsecutiveOnes(vector<int>& nums) {
int max=0,cur=0;
for(int i=0;i<nums.size();i++)
{
if(nums[i]&1)
{
max=max>++cur?max:cur;
}
else cur=0;
}
return max;
}
};