1004. Max Consecutive Ones III
Medium
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 from 0 to 1. 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 from 0 to 1. The longest subarray is underlined.
Constraints:
1 <= nums.length <= 10^5
nums[i]
is either0
or1
.0 <= k <= nums.length
解題
func longestOnes(nums []int, k int) int {
if len(nums) == k { return k }
zero, ans := 0, 0
left, right := 0, 0
for right < len(nums) {
if nums[right] == 0 { zero++ }
for zero > k && left < right {
if nums[left] == 0 { zero-- }
left++
}
if right-left+1 > ans && right-left+1-zero != 0 {
ans = right-left+1
}
right++
}
return ans
}
Last updated