第一次写的代码超时,只过了一半用例
class Solution:
def findMaxConsecutiveOnes(self, nums: List[int]) -> int:
temp = 1
maxs = 1
if len(nums) == 1:
return maxs
if 0 not in nums:
return len(nums)
for i in range (0,len(nums)):
if nums[i] == 0:
temp -= 1
flag = 0
for j in range(i+1,len(nums)):
if nums[j] == 0 and temp == 0:
maxs = max(maxs,j-i)
temp = 1
flag = 1
break;
elif nums[j] == 0 and temp == 1:
temp -= 1
continue;
if flag == 0:
maxs = max(maxs,j-i+1)
return maxs
第二次尝试用滑动窗口写 过啦!
class Solution:
def findMaxConsecutiveOnes(self, nums: List[int]) -> int:
l,r = 0,0
zero = 1
maxs = 1
while r < len(nums):
while nums[r] == 0 and zero == 0 and l <len(nums)-1:
maxs = max(maxs,r-l)
#缩小窗口
if nums[l] == 0:
zero += 1
l += 1
if nums[l] == 0:
l += 1
zero += 1
if nums[r] == 0:
zero -= 1;
r += 1
maxs = max(maxs,r-l)
return maxs