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
}
posted @ 2025-08-22 22:21  余越  阅读(6)  评论(0)    收藏  举报