题目描述
给定一个二进制数组 nums , 计算其中最大连续 1 的个数。
示例 1:
输入:nums = [1,1,0,1,1,1] 输出:3 解释:开头的两位和最后的三位都是连续 1 ,所以最大连续 1 的个数是 3.
示例 2:
输入:nums = [1,0,1,1,0,1] 输出:2
来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/max-consecutive-ones
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
1.遍历计数法
使用max存储最大值,cur进行计数,每次遇到非目标元素就归零 时间复杂度O(n)
但每次cur增加都要判一次是否大于max
/**
* @param {number[]} nums
* @return {number}
*/
var findMaxConsecutiveOnes = function(nums) {
let max=0,cur=0
for(let i = 0;i < nums.length; i++){
if(nums[i]==1){
cur++
if(cur>max){
max=cur
}
}else{
cur=0
}
}
return max
};
2.双指针 或滑动窗口法
var findMaxConsecutiveOnes = function(nums) {
let left = 0, right = 0;
let max = 0;
let n = nums.length;
while(left < n && right < n) {
if(nums[left] == 1 && nums[right] === 1) {
max = Math.max(max, right - left + 1)
} else {
left = right + 1;
}
right++;
}
return max;
};