2020-07-06
1.题目描述
给定一个由若干 0 和 1 组成的数组 A,我们最多可以将 K 个值从 0 变成 1 。
返回仅包含 1 的最长(连续)子数组的长度。
2.题解
滑动窗口
3.代码
class Solution {
public:
int longestOnes(vector<int>& A, int K) {
int len=A.size();
if (!len) return 0;
int i=0,res=0,cnt=0;
for (int j=0;j<len;j++){
if (A[j]==0) cnt++;
while (cnt>K){
if (A[i]==0) cnt--;
i++;
}
res=max(res,j-i+1);
}
return res;
}
};
class Solution {
public:
int longestOnes(vector<int>& A, int K) {
int len=A.size();
if (!len) return 0;
int i=0,res=0,cnt=0;
for (int j=0;j<len;j++){
if (A[j]==0) cnt++;
if (cnt>K){
if (A[i]==0) cnt--;
i++;
}
res=j-i+1;
}
return res;
}
};