1004. Max Consecutive Ones I I I

# 1004. Max Consecutive Ones III#

## 题目 #

Given an array A of 0s and 1s, we may change up to K values from 0 to 1.

Return the length of the longest (contiguous) subarray that contains only 1s.

Example 1:

``````
Input: A = [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: A = [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.

``````

Note:

• 1 <= A.length <= 20000
• 0 <= K <= A.length
• A[i] is 0 or 1

## 代码 #

``````
package leetcode

func longestOnes(A []int, K int) int {
res, left, right := 0, 0, 0
for left < len(A) {
if right < len(A) && ((A[right] == 0 && K > 0) || A[right] == 1) {
if A[right] == 0 {
K--
}
right++
} else {
if K == 0 || (right == len(A) && K > 0) {
res = max(res, right-left)
}
if A[left] == 0 {
K++
}
left++
}
}
return res
}

func max(a int, b int) int {
if a > b {
return a
}
return b
}

``````

Apr 8, 2023