目录

1004:最大连续1的个数 III(1655 分)

力扣第 126 场周赛第 3 题

题目

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

示例 1:

输入:nums = [1,1,1,0,0,0,1,1,1,1,0], K = 2
输出:6
解释:[1,1,1,0,0,1,1,1,1,1,1]
粗体数字从 0 翻转到 1,最长的子数组长度为 6。

示例 2:

输入:nums = [0,0,1,1,0,0,1,1,1,0,1,1,0,0,0,1,1,1,1], K = 3
输出:10
解释:[0,0,1,1,1,1,1,1,1,1,1,1,0,0,0,1,1,1,1]
粗体数字从 0 翻转到 1,最长的子数组长度为 10。

提示:

  • 1 <= nums.length <= 105
  • nums[i] 不是 0 就是 1
  • 0 <= k <= nums.length

分析

和 0424 类似,还要更简单一些。

解答

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
def longestOnes(self, A: List[int], K: int) -> int:
	i = 0
	for j, num in enumerate(A):
		if num==0:
			K -= 1
		if K < 0:
			if A[i] == 0:
				K += 1       
			i += 1
	return j-i+1

588 ms