1004.最大连续1的个数 III

106 阅读1分钟

题目: 给定一个二进制数组 nums 和一个整数 k,如果可以翻转最多 k 个 0 ,则返回 数组中连续 1 的最大个数
算法:

方法一:滑动窗口

func longestOnes(nums []int, k int) int {
	left, right := 0, 0
        // sum 为[left,right]之间1的个数
	sum := 0 
	for ;right < len(nums); right ++ {
		sum = sum + nums[right]
                // 长度超过了最大长度,left右移
		if right - left + 1 > sum + k {
			sum = sum - nums[left]
			left ++
		}
	}
	return right - left
}