LeetCode 1004
https://leetcode.cn/problems/max-consecutive-ones-iii/description/
难度:中等
高频面试题汇总:https://www.yuweihung.com/posts/2025/lc-hot/
统计窗口内 0 的个数 cnt0,则问题转化成在 cnt0 ≤k 的前提下,窗口大小的最大值。
时间复杂度:O(n),其中 n 为 nums 的长度。证明方式见视频讲解。
空间复杂度:O(1)。
class Solution {
public:
int longestOnes(vector<int>& nums, int k) {
int ans = 0, left = 0, cnt0 = 0;
for (int right = 0; right < nums.size(); right++) {
cnt0 += 1 - nums[right]; // 0 变成 1,用来统计 cnt0
while (cnt0 > k) {
cnt0 -= 1 - nums[left];
left++;
}
ans = max(ans, right - left + 1);
}
return ans;
}
};