Algorithm


Problem Name: 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 <= 105
  • nums[i] is either 0 or 1.
  • 0 <= k <= nums.length

Code Examples

#1 Code Example with Javascript Programming

Code - Javascript Programming


const longestOnes = function (A, K) {
  let i = 0
  let j = 0
  const len = A.length
  while (j < len) {
    if (A[j] === 0) K--
    if (K < 0) {
      if (A[i] === 0) K++
      i++
    }
    j++
  }
  return j - i
}
Copy The Code & Try With Live Editor

Input

x
+
cmd
nums = [1,1,1,0,0,0,1,1,1,1,0], k = 2

Output

x
+
cmd
6

#2 Code Example with Python Programming

Code - Python Programming


class Solution:
    def longestOnes(self, A: List[int], K: int) -> int:
        zeros, res = [-1] + [i for i, c in enumerate(A) if not c] + [len(A)], 0
        for j in range(K + 1, len(zeros)):
            res = max(res, zeros[j] - zeros[j - K - 1] - 1)
        return res or K and len(A)
Copy The Code & Try With Live Editor

Input

x
+
cmd
nums = [1,1,1,0,0,0,1,1,1,1,0], k = 2

Output

x
+
cmd
6
Advertisements

Demonstration


Previous
#1003 Leetcode Check If Word Is Valid After Substitutions Solution in C, C++, Java, JavaScript, Python, C# Leetcode
Next
#1005 Leetcode Maximize Sum Of Array After K Negations Solution in C, C++, Java, JavaScript, Python, C# Leetcode