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 and 1.
The length of input array is a positive integer and will not exceed 10,000
解法一:
class Solution {
public:
int findMaxConsecutiveOnes(vector<int>& nums) {
if(nums.empty())
return 0;
int max_len = 0;
int start = -1;
int cur_max = 0;
for(int i=0; i<nums.size(); ++i){
if(nums[i] == 1 && start == -1) {
start = i;
cur_max = 1;
}
else if(nums[i] == 1) {
cur_max = std::max(cur_max, i-start+1);
}
else {
start = -1;
continue;
}
max_len = std::max(cur_max, max_len);
}
return max_len;
}
};
解法二:
class Solution {
public:
int findMaxConsecutiveOnes(vector<int>& nums) {
int max = 0;
int sum = 0;
for(int i=0; i<nums.size(); ++i){
sum = (sum + nums[i]) * nums[i];
if(sum > max) max = sum;
}
return max;
}
};