Magicsheet logo

Max Consecutive Ones III

Medium
63.8%
Updated 6/1/2025

Max Consecutive Ones III

What is this problem about?

The Max Consecutive Ones III problem provides a binary array and an integer k. You are allowed to flip at most k zeroes to ones. Your goal is to return the maximum number of consecutive 1s you can achieve in the array after performing these flips. It is the ultimate generalization of the "Max Consecutive Ones" series.

Why is this asked in interviews?

This is a benchmark Sliding Window problem. Interviewers from companies like Amazon, Google, and Meta ask it to see if a candidate has mastered dynamic window resizing based on constraints. It tests whether you can abstract the phrase "flip at most k zeroes" into "find the longest contiguous subarray that contains at most k zeroes."

Algorithmic pattern used

This problem perfectly embodies the Sliding Window (Two Pointers) pattern. We maintain a left pointer, a right pointer, and a zero_count. We expand the window by moving right and incrementing zero_count if we encounter a 0. If zero_count strictly exceeds k, the window is invalid. We then increment the left pointer to shrink the window, decrementing zero_count when the left pointer passes over a 0. The valid window size is continuously tracked.

Example explanation

Array: [1, 1, 0, 0, 1, 1], k = 1.

  • right = 0 to 1 ([1, 1]): zeros = 0. Valid. Max = 2.
  • right = 2 ([1, 1, 0]): zeros = 1. Valid. Max = 3.
  • right = 3 ([1, 1, 0, 0]): zeros = 2. Invalid! (2>12 > 1).
    • Move left from 0 to 1 (drops 1). Window [1, 0, 0]. zeros = 2. Invalid.
    • Move left from 1 to 2 (drops 1). Window [0, 0]. zeros = 2. Invalid.
    • Move left from 2 to 3 (drops 0). Window [0]. zeros = 1. Valid.
  • right = 4 ([0, 1]): zeros = 1. Valid.
  • right = 5 ([0, 1, 1]): zeros = 1. Valid. Length is 3. The max length found is 3.

Common mistakes candidates make

A very common mistake is physically mutating the array (changing 0 to 1) during the traversal. This leads to convoluted backtracking logic to "un-flip" the zeroes when the window moves. The elegant trick is to never mutate the array; simply count the zeroes in the current window and treat them as "hypothetically flipped."

Interview preparation tip

For the Max Consecutive Ones III coding problem, practice the "Non-Shrinking Window" optimization. Instead of a while(zeros > k) loop that actively shrinks left, you can simply advance both left and right by 1 when the window is invalid. The window will never shrink, it will only grow when valid. At the end of the array, the size of the window (right - left) is inherently your maximum length!

Similar Questions