# 1004. 最大连续 1 的个数 III

# 题目

给定一个由若干 0 和 1 组成的数组 A,我们最多可以将 K 个值从 0 变成 1 。

返回仅包含 1 的最长(连续)子数组的长度。

# 题解

# 滑动窗口

/**
 * @param {number[]} A
 * @param {number} K
 * @return {number}
 */
var longestOnes = function(A, K) {
  const n = A.length;
  let left = 0,
    lsum = 0,
    rsum = 0;
  let ans = 0;
  for (let right = 0; right < n; ++right) {
    rsum += 1 - A[right];
    while (lsum < rsum - K) {
      lsum += 1 - A[left];
      ++left;
    }
    ans = Math.max(ans, right - left + 1);
  }
  return ans;
};
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21