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;
}
}