leetcode1004-最大连续1的个数-III
题目描述
- 给定二进制数组 nums 和 整数 k
- 最多可以将 k 个 0 变成 1
- 返回最长的连续 1 的个数
示例
输入:nums = [1,1,1,0,0,0,1,1,1,1,0], K = 2
输出:6
输入:nums = [0,0,1,1,0,0,1,1,1,0,1,1,0,0,0,1,1,1,1], K = 3
输出:10
题解
- 思路
- 不要模拟
- 寻找(最多)含 k 个 0 的最长的 1
func longestOnes(nums []int, k int) int {
res := 0
for i, j, cnt := 0, 0, 0; i < len(nums); i ++ {
if (nums[i] == 0) { cnt ++ }
for k < cnt {
if nums[j] == 0 { cnt -- }
j ++
}
res = max(res, i - j + 1)
}
return res
}

浙公网安备 33010602011771号