Back to all solutions

#1004 - Max Consecutive Ones III

Problem Description

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.

Solution

/**
 * @param {number[]} nums
 * @param {number} k
 * @return {number}
 */
var longestOnes = function(nums, k) {
  let left = 0;
  let right = 0;

  while (right < nums.length) {
    if (!nums[right]) k--;
    if (k < 0) {
      if (!nums[left]) k++;
      left++;
    }
    right++;
  }

  return right - left;
};