题目
给定一个二进制数组 nums
和一个整数 k
,如果可以翻转最多 k
个 0
,则返回 数组中连续 1
的最大个数 。
示例 1:
1 | 输入:nums = [1,1,1,0,0,0,1,1,1,1,0], K = 2 |
示例 2:
1 | 输入:nums = [0,0,1,1,0,0,1,1,1,0,1,1,0,0,0,1,1,1,1], K = 3 |
提示:
1 <= nums.length <= 105
nums[i]
不是0
就是1
0 <= k <= nums.length
题解
1 | class Solution { |
知识点
题意转换:把「最多可以把 K 个 0 变成 1,求仅包含 1 的最长子数组的长度」转换为 「找出一个最长的子数组,该子数组内最多允许有 K 个 0 」。
求最大连续子区间,可以使用滑动窗口方法。
滑动窗口的限制条件是:窗口内最多有 K 个 0。