Max Consecutive Ones
https://leetcode.com/explore/learn/card/fun-with-arrays/523/conclusion/3230
这道题是每个1的group之间最多间隔1个0,题目generalize成每个1的group之间最多间隔k个
间隔为1的解法:
class Solution:
def findMaxConsecutiveOnes(self, nums: List[int]) -> int:
prev = -1
curr = 0
res = 0
for num in nums:
if num == 0:
prev= curr
curr = 0
else:
curr+=1
res = max(res,prev+curr+1)
return res
间隔为K的解法,sliding window的套路,当zero count超过k,头指针i就向前
class Solution:
def findMaxConsecutiveOnes(self, nums: List[int]) -> int:
k=1
res = 0
zero = 0
i = 0
for j,num in enumerate(nums):
if num == 0:
zero+=1
while zero > k:
if nums[i] == 0:
zero-=1
i+=1
res = max(res,j-i+1)
return res
Last updated
Was this helpful?