/**
* @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
}