算法列表

1004. 最大连续1的个数 III 中等

布莱克2026-05-24 23:13滑动窗口

问题:

给定一个二进制数组 nums 和一个整数 k,假设最多可以翻转 k0 ,则返回执行操作后 数组中连续 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。

回答:

var longestOnes = function(nums, k) {
    let left = 0;
    let right = 0;
    let count = 0;
    let max = 0;
    while (right < nums.length) {
        if (nums[right] == 0) {
            count++;
        }
        while (count > k) {
            if (nums[left] == 0) {
                count--;
            }
            left++;
        }
        max = Math.max(max, right - left + 1);
        right++;
    }
    return max;
};


assistant