Skip to content
prdlk
Esc
↑↓navigate↵open⌘Jpreview
On this page

1004. Max Consecutive Ones III

Given a binary array nums and an integer k, return the maximum number of consecutive 1's in the array if you can flip at most k 0's

Example 1:

  • Input: nums = [1,1,1,0,0,0,1,1,1,1,0], k = 2
  • Output: 6
  • Explanation: [1,1,1,0,0,1,1,1,1,1,1] Bolded numbers were flipped from 0 to 1. The longest subarray is underlined.

Example 2:

  • Input: nums = [0,0,1,1,0,0,1,1,1,0,1,1,0,0,0,1,1,1,1], k = 3
  • Output: 10
  • Explanation: [0,0,1,1,1,1,1,1,1,1,1,1,0,0,0,1,1,1,1] Bolded numbers were flipped from 0 to 1. The longest subarray is underlined.

Constraints:

  • 1 <= nums.length <= 10^5
  • nums[i] is either 0 or 1.
  • 0 <= k <= nums.length

Solution

class Solution:
    def longestOnes(self, nums: list[int], k: int) -> int:
        left = 0
        cur = 0
        ans = 0

        for right in range(len(nums)):
            if nums[right] == 0:
                cur += 1
            while cur > k:
                if nums[left] == 0:
                    cur -= 1
                left += 1

            ans = max(ans, right - left + 1)

        return ans

Last updated on October 2, 2026

Was this page helpful?