487.最大连续1的个数II

方法:滑动窗口
维护一个区间,使得该区间中只包含一个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;
    }
}
                

















