Find the longest subarray with consecutive 1s if you can flip at most k zeros.
Medium
๐ Problem Statement
You are given a binary array (contains only 0s and 1s), and an integer k (maximum number of 0s you can flip to 1).
Find the length of the longest contiguous subarray that contains only 1s after flipping at most k zeros.
๐ Example
Input :
nums = [1,1,0,0,1,1,1,0,1], k = 2
Output: : 7
(Flip the two 0s at index 2 and 3 โ subarray becomes [1,1,1,1,1,1,1])
Intuition
This is a classic sliding window problem.
We want to keep a window where at most k zeros exist. Weโll expand the window to the right and shrink it from the left if zeros exceed k.
๐ ๏ธ Solution
๐งฎ Step-by-step Algorithm
-  
Initialize two pointers: left = 0, right = 0
 -  
Track number of zeros in current window with zero_count
 -  
Expand right one step at a time
 -  
If zero_count > k, move left until itโs โค k
 -  
Track the max window length during the process
 
๐งโ๐ป Code
def longestOnes(nums: List[int], k: int) -> int:
    left = 0
    max_len = 0
    zero_count = 0
    for right in range(len(nums)):
        if nums[right] == 0:
            zero_count += 1
        while zero_count > k:
            if nums[left] == 0:
                zero_count -= 1
            left += 1  # shrink the window
        max_len = max(max_len, right - left + 1)
    return max_len
๐ Time Complexity: \(O(n)\) - Each index is visited at most twice (once by right, once by left)
๐ฆ Space Complexity: \(O(1)\) โ no extra space used