思路:
滑动窗口,因为数组里面0的个数可能没有k多,所以统计一下数组里面0的个数。
思路类似
LeetCode 487. 最大连续1的个数 II
代码:
class Solution {
public:
int longestOnes(vector<int>& nums, int k) {
int cnt = 0, win = 0, ans = 0;
int zerosum = 0;
for(int i = 0, j = 0 ; i < nums.size(); i++){
if(nums[i] == 0) cnt++,zerosum++;
if(nums[i]) win++;
while(cnt > k){
if(nums[j++] == 0) cnt--;
else win--;
}
ans = max(ans, win);
}
if(cnt) {
if(zerosum < k) return zerosum + ans;
return k + ans;
}
return ans;
}
};
评论区