解题思路
滑动窗口,不断滑动最终获得最大值
如果sum大于0代表可以替换0为1 小于则说明不可以替换,且只有当left左移跳过值为0时 替换机会才会增加
代码
class Solution {
public int longestOnes(int[] A, int K) {
int left=0,right=0,ans=0,n=A.length,sum=K;
while (right<n && left<=right){
if (A[right]==1){
right++;
}else {
if (sum>0){
right++;
sum--;
}else {
if (A[left]==0 && K!=0) {
sum++;
}else if (right==left && sum==0){
right++;
}
left++;
}
}
ans=Math.max(ans,right-left);
}
return ans;
}
}