LC1004 最大连续1的个数三
1 题目
给定一个二进制数组 nums 和一个整数 k,假设最多可以翻转 k 个 0 ,则返回执行操作后 数组中连续 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 <= 105nums[i]不是0就是10 <= k <= nums.length
2 解答
滑动窗口
class Solution:
def longestOnes(self, nums: List[int], k: int) -> int:
n = len(nums)
left = 0
cont = 0# zero 's times
ans = 0# answer
for right , val in enumerate(nums):
if val == 0:
cont += 1
while cont >k:
if (nums[left] == 0):
cont -= 1
left += 1
ans = max(right - left + 1 , ans)
return ans

浙公网安备 33010602011771号