给定一个二进制数组 nums 和一个整数 k,如果可以翻转最多 k 个 0 ,则返回 数组中连续 1 的最大个数 。
示例 1:
输入:nums = [1,1,1,0,0,0,1,1,1,1,0], K = 2
输出:6
解释:[1,1,1,0,0,1,1,1,1,1,1]
粗体数字从 0 翻转到 1,最长的子数组长度为 6。
来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/max-consecutive-ones-iii
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
题解、数组中包含最多k个0的最长子串。滑动窗口
记录0的个数,左右、结果
class Solution {
public int longestOnes(int[] nums, int k) {
int left = 0, right = 0, zeros = 0, res = 0;
while (right < nums.length) {
if (nums[right] == 0) {
zeros++;
}
while (zeros > k) {
if (nums[left] == 0) {
zeros--;
}
left++;
}
res = Math.max(res, right - left + 1);
right++;
}
return res;
}
}