LeetCode75-1004-Max-Consecutive-Ones

🧠 思路总结

这道题目和典型的Sliding Window题目不一样,因为它的窗口大小不是固定的,而是动态变化的。所以不能直接先固定第一个Window再慢慢滑动,而是这个窗口随时可能变化。

区别:
先固定一个窗口适合固定大小的窗口,或者知道窗口大小后慢慢移动

❗ 易错点 / 小坑

  • 窗口大小是可变的,所以我们用while循环缩小左边界
  • 更新最大大小的时候应该是在 窗口合法的时候

✅ 代码(Java)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
class Solution {
public int longestOnes(int[] nums, int k) {
int zeroCount = 0;
int left = 0;
int res = 0;
int maxRes = 0;
for (int right = 0; right < nums.length; right++) {
if (nums[right] == 0) {
zeroCount++;
}
while (zeroCount > k) {
if (nums[left] == 0) {
zeroCount--;
}
left++;
}
res = right - left + 1;
maxRes = Math.max(res, maxRes);
}
return maxRes;
}
}

LeetCode75-1004-Max-Consecutive-Ones
https://powersixxx.github.io/leetcode-blog/2026/02/02/LeetCode75-1004-Max-Consecutive-Ones/
作者
Baowen Liu
发布于
2026年2月2日
许可协议