题解
还是滑动窗口
跟之前做的题目其实是有些类似的,需要进行题目转换,转化为寻找包含k个0的最大连续子串。
然后题目就变得简单了
左右两个指针,右指针一直向右走,当不满足<= k个0的条件,那么需要左指针右移,并且判断当前存在的0的个数。
代码
class Solution {
public:
int longestOnes(vector<int>& A, int K) {
int n = A.size();
int left = 0,res = 0,ans = 0;
for(int right = 0; right < n; right++){
if(A[right] == 0){
res++;
}
if(res > K){
if(A[left++] == 0){
res--;
}
}
ans = max(ans,right - left + 1);
}
return ans;
}
};