leetcode力扣刷题打卡
题目:1004. 最大连续1的个数 III
描述:
给定一个二进制数组 nums 和一个整数 k,如果可以翻转最多 k 个 0 ,则返回 数组中连续 1 的最大个数 。
解题思路
1、最多连续个1,也就是求最少该滑动窗口内最多k个0;
2、滑动窗口,双指针;
原代码##
class Solution {
public:
int longestOnes(vector<int>& nums, int k) {
int n = nums.size();
int l = 0, r = 0, cnt = 0, ans = 0;
while (l <= r && r < n) {
if (!nums[r]) {
cnt++;
}
while (cnt > k) {
if (!nums[l]) cnt--;
l++;
}
ans = max(ans, r - l + 1);
r++;
}
return ans;
}
};