思路
滑动窗口:如果用left和right表示连续1的左右边界,那么意味着可以把0修改为1的次数为k次
解题过程
用一个变量num记录left和right之间0的个数,当num<=k时,right++,num>k时,将left向右移动,直到不再满足num>k
Code
class Solution {
public int longestOnes(int[] nums, int k) {
int len=nums.length;
int ans=0;
int left=0;
int num=0;
for(int right=0;right<len;right++){
if(nums[right]!=1)num++;
while(num>k){
if(nums[left]!=1)num--;
left++;
}
ans=Math.max(ans,right-left+1);
}
return ans;
}
}
作者:菜卷
链接:https://leetcode.cn/problems/max-consecutive-ones-iii/solutions/2901086/zui-da-lian-xu-1de-ge-shu-iii-by-ashi-ji-le8t/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。