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 from0to1. 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 from0to1. The longest subarray is underlined.
Constraints:
1 <= nums.length <= 10^5nums[i]is either 0 or 1.0 <= k <= nums.length
Solution
class Solution:
def longestOnes(self, nums: list[int], k: int) -> int:
left = 0
cur = 0
ans = 0
for right in range(len(nums)):
if nums[right] == 0:
cur += 1
while cur > k:
if nums[left] == 0:
cur -= 1
left += 1
ans = max(ans, right - left + 1)
return ans