487. Max Consecutive Ones II

487. Max Consecutive Ones II

這一個題目應該直接使用 1004. Max Consecutive Ones III 來思考

class Solution:
    def findMaxConsecutiveOnes(self, nums: List[int]) -> int:
        k = 1
        slow, fast, zeros, ans = 0, 0, 0, 0

        while fast < len(nums):
            # 當前數字為 0,增加 0 的計數
            if nums[fast] == 0:
                zeros += 1

            # 如果窗口中的 0 的數量超過了 k,縮小窗口
            if zeros > k:
                # 逐步縮小左側窗口,直到 0 的數量小於等於 k
                if nums[slow] == 0:
                    zeros -= 1
                slow += 1

            # 計算當前窗口的大小,並更新答案
            ans = max(ans, fast - slow + 1)
            fast += 1

        return ans