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.
def longestOnes(self, nums: List[int], k: int) -> int:
N = len(nums)
nZeros = 0
i = 0
res = 0
for j in range(N):
nZeros += (nums[j]) == 0
while nZeros > k:
nZeros -= (nums[i] == 0)
i += 1
res = max(j - i + 1, res)
return res
A harder to understand version
def longestOnes(self, nums: List[int], k: int) -> int:
N = len(nums)
nZeros = 0
i = 0
res = 0
for j in range(N):
nZeros += (nums[j]) == 0
if nZeros > k:
nZeros -= (nums[i] == 0)
i += 1
return j - i + 1