Open yankewei opened 3 years ago
维护一个窗口即可, 要考虑左指针变化的时候,如果原来的值为0,记得K++
func longestOnes(A []int, K int) int {
var ret int
l,r := 0,0
for r < len(A) {
if A[r] == 1 {
ret = max(ret, r-l+1)
r++
continue
}
if A[r] == 0 {
if K > 0 {
ret = max(ret, r-l+1)
r++
K--
} else {
if A[l] == 0 {
K++
}
l++
}
}
}
return ret
}
func max(x, y int) int {
if x > y {
return x
}
return y
}
给定一个由若干 0 和 1 组成的数组 A,我们最多可以将 K 个值从 0 变成 1 。
返回仅包含 1 的最长(连续)子数组的长度。
示例 1:
示例 2:
提示:
来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/max-consecutive-ones-iii 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。