【LeetCode刷题-滑动窗口】--487.最大连续1的个数II

487.最大连续1的个数II

【LeetCode刷题-滑动窗口】--487.最大连续1的个数II_第1张图片

方法:滑动窗口

维护一个区间,使得该区间中只包含一个0

class Solution {
    public int findMaxConsecutiveOnes(int[] nums) {
        int n = nums.length;
        int left = 0,right = 0,sum = 0;
        int zero = 0; //计算0的个数
        while(right < n){
            if(nums[right] == 0){
                zero++;
                while(zero > 1){ //当区间中包含两个0时,移动左区间,直到区间中只包含一个0
                    if(nums[left]==0){
                        zero--;
                    }
                    left++;
                }
            }
            sum = Math.max(sum,right - left +1);
            right++;
        
        }
        return sum;
    }
}

你可能感兴趣的:(LeetCode,leetcode,算法)