0
点赞
收藏
分享

微信扫一扫

1004. 最大连续1的个数 III 滑动窗口

君之言之 2022-02-08 阅读 91

给定一个二进制数组 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。
示例 2:

输入:nums = [0,0,1,1,0,0,1,1,1,0,1,1,0,0,0,1,1,1,1], K = 3
输出:10
解释:[0,0,1,1,1,1,1,1,1,1,1,1,0,0,0,1,1,1,1]
粗体数字从 0 翻转到 1,最长的子数组长度为 10。
 

提示:

1 <= nums.length <= 105
nums[i] 不是 0 就是 1
0 <= k <= nums.length
通过次数74,832提交次数125,631

/**
 * @param {number[]} nums
 * @param {number} k
 * @return {number}
 */
var longestOnes = function(nums, k) {
    let l = 0, r = 0;
    let zeroCounter = 0;
    let res = 0;
    for (r = 0; r < nums.length; r++) {
        if (nums[r]  === 0) {
            zeroCounter++
        }
        while(zeroCounter > k) {
            if (nums[l] == 0) {
                zeroCounter--
            }
            l++
        }
        res = Math.max(res, r - l + 1)
    }
    return res;
};
举报

相关推荐

0 条评论