LC1004 最大連續(xù)1的個數(shù)三
1 題目
給定一個二進(jìn)制數(shù)組 nums 和一個整數(shù) k,假設(shè)最多可以翻轉(zhuǎn) k 個 0 ,則返回執(zhí)行操作后 數(shù)組中連續(xù) 1 的最大個數(shù) 。
示例 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]
粗體數(shù)字從 0 翻轉(zhuǎn)到 1,最長的子數(shù)組長度為 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]
粗體數(shù)字從 0 翻轉(zhuǎn)到 1,最長的子數(shù)組長度為 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

浙公網(wǎng)安備 33010602011771號