mirror of
https://github.com/TheAlgorithms/JavaScript.git
synced 2025-07-04 07:29:47 +08:00
33 lines
777 B
JavaScript
33 lines
777 B
JavaScript
/**
|
|
* @function maxConsecutiveOnesIII
|
|
* @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.
|
|
* @param {number[]} nums
|
|
* @param {number} k
|
|
* @return {number}
|
|
* @see [Leetcode link](https://leetcode.com/problems/max-consecutive-ones-iii/)
|
|
*/
|
|
export const maxConsecutiveOnesIII = (nums, k) => {
|
|
if (!nums.length) return 0
|
|
|
|
let result = 0
|
|
|
|
for (
|
|
let slowPointer = 0, fastPointer = 0;
|
|
fastPointer < nums.length;
|
|
fastPointer++
|
|
) {
|
|
if (nums[fastPointer] === 0) {
|
|
k--
|
|
}
|
|
|
|
while (k < 0) {
|
|
if (slowPointer === 0) {
|
|
k++
|
|
}
|
|
slowPointer++
|
|
}
|
|
result = Math.max(result, fastPointer - slowPointer + 1)
|
|
}
|
|
return result
|
|
}
|