https://leetcode.com/problems/max-consecutive-ones-iii/description/

class Solution:
    def longestOnes(self, nums: List[int], k: int) -> int:
        zero_count = 0
        l = 0
        max_ones = 0
        for r in range(len(nums)):
            if nums[r] == 0:
                zero_count += 1
            while zero_count > k:
                if nums[l] == 0:
                    zero_count -= 1
                l += 1
            max_ones = max(max_ones, r - l + 1)
        return max_ones

TC: O(n), n for the length of nums

SC: O(1)

Sliding window