1004. 最大连续1的个数 III
代码
ts
/**
* 1004. 最大连续1的个数 III
* https://leetcode.cn/problems/max-consecutive-ones-iii/
*/
function longestOnes(nums: number[], k: number): number {
let left = 0;
let res = 0;
let cnt = 0;
for (let i = 0; i < nums.length; i++) {
if (nums[i] === 0) {
cnt++;
}
while (cnt > k) {
if (nums[left] === 0) {
cnt--;
}
left++;
}
res = Math.max(res, i - left + 1);
}
return res;
}思路
使用滑动窗口:
- 用
cnt记录当前窗口内0的个数; - 右指针向右移动,遇到
0时cnt++; - 当
cnt > k时,移动左指针缩小窗口,直到窗口内0的个数不超过k; - 每次更新窗口长度的最大值。
时间复杂度