Maximize Number of 1's Visualization & Animation
Finds the maximum consecutive 1s achievable by flipping at most k zeros using a variable sliding window; O(n).
## What is it?
Given a binary array and an integer `k`, find the maximum number of consecutive 1s you can obtain by flipping at most `k` zeros. Sliding window technique.
## How it works
- Use `left` and `right` pointers; count zeros in the current window
- Expand `right`: if `arr[right] == 0`, increment `zeroCount`
- If `zeroCount > k`: shrink by moving `left` forward until `zeroCount <= k`
- Track `maxLen = max(maxLen, right - left + 1)` at each step
- Return `maxLen`
## When to use
- "Allow at most k changes" problems on binary arrays
- Maximum window with a limited number of "bad" elements
- LeetCode 1004 — Max Consecutive Ones III
## Key Points
- O(n) time, O(1) space
- Variant of the variable-size sliding window template
- When `arr[left] == 0` and we move left past it, decrement `zeroCount`
Category: algorithms
Difficulty: intermediate
- sliding-window
Time Complexity: O(n)
Space Complexity: O(1)
View Maximize Number of 1's VisualizationMaximize Number of 1's
intermediateFinds the maximum consecutive 1s achievable by flipping at most k zeros using a variable sliding window; O(n).
zeros 0/2
len 0
max 0
New Max!
1
[0]
0
[1]
1
[2]
1
[3]
0
[4]
1
[5]
0
[6]
1
[7]
1
[8]
1 in window
0 in window (will flip)
Result window
Outside window
Init: left=0, right=-1, zeros=0. Expand right and allow at most 2 zeros in the window.
1 / 13