C++描述 LeetCode 1004. 最大连续1的个数 III
大家好,我叫亓官劼(qí guān jié )
给定一个由若干 0
和 1
组成的数组 A
,我们最多可以将 K
个值从 0 变成 1 。
返回仅包含 1 的最长(连续)子数组的长度。
示例 1:
示例 2:
提示:
-
1 <= A.length <= 20000
-
0 <= K <= A.length
-
A[i]
为0
或1
解题思路
滑动窗口。设置左右指针l和r
分别指向当前区间的左右边界,使用lsum记录0-l中0的个数,rsum记录0-r中0的个数
,则rsum-lsum
表示当前区间内0的个数,如果rsum - lsum - K <= 0
则说明当前区间内都可以转为1,更新res
,否则l右移,更新lsum即可
算法实现