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
解决
我们需要求的是在给定数组中抽取一组连续的子数组使得里面全是1
并且个数达到最大值,即需要我们求出给定数组中连续1
的最大个数。
class Solution {
public:
int findMaxConsecutiveOnes(vector<int>& nums) {
int num = nums.size();
int result = 0; // result记录最终结果
int temp = 0; // temp记录当前"1"的个数
for (int i = 0; i < num; i++) {
if (nums[i] == 1) {
temp++;
} else {
// 当"nums[i] = 0"时候,比较temp和result,确定哪个是最大值,同时temp清零,为下次计算"1"的个数做准备。
result = (result < temp) ? temp : result;
temp = 0;
}
}
// 若给定数组全为"1",则result此时为"0",需要再次比较result和temp
result = (result < temp) ? temp : result;
return result;
}
};