1004. 最大连续1的个数 III
难度中等181收藏分享切换为英文接收动态反馈
给定一个由若干 0
和 1
组成的数组 A
,我们最多可以将 K
个值从 0 变成 1 。
返回仅包含 1 的最长(连续)子数组的长度。
示例 1:
1 | 输入:A = [1,1,1,0,0,0,1,1,1,1,0], K = 2 |
示例 2:
1 | 输入:A = [0,0,1,1,0,0,1,1,1,0,1,1,0,0,0,1,1,1,1], K = 3 |
提示:
1 <= A.length <= 20000
0 <= K <= A.length
A[i]
为0
或1
滑动窗口
使用滑动窗口维护窗口中1的数量,如果窗口中0的数量
大于 窗口长度减去(1的数量+K的数量)
,说明窗口不满足条件
找到一个平衡,即:左指针对应的前缀和+k等于右指针对应的前缀和,此时可以满足题意条件,否则不能满足题意条件,需要右移左指针
1 | class Solution { |
二分查找
1 | class Solution { |