题目链接:
题目描述:
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.
题目解释:
给定一个二进制数组,数组中存放的都是0,1两个整数,求 这个数组中连续整数1的长度。例如给定输入数组:[1,1,0,1,1,1],这个数组的最大连续1长度为3.数组中第一位和第二位为连续的两个1,第三位、第四位和第五位为连续的3个1,所以最大长度为3.
解题方案:
寻找最大连续1的长度,我们只要对数组遍历一边即可,在遍历过程中纪录当前连续块的长度,当碰见0中断连续时,终止计数,并与之前保存的连续块最大长度进行比较,保留最大连续长度。然后继续前行,当碰见1时再重新计数。这样到遍历完整个数组之后,变量中保留的就是最大连续长度。
AC代码:
class Solution {
public:
int findMaxConsecutiveOnes(vector<int>& nums) {
int len = nums.size();
int pre_max = 0;
for(int i = 0; i < len; ) {
if(nums[i] == 1) {
int max = 1;
while(nums[++i] == 1) {
max++;
}
if(max > pre_max) {
pre_max = max;
}
} else {
i++;
}
}
return pre_max;
}
};
此种解法的时间复杂度为O(N)