
第一次写的代码超时,只过了一半用例
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
这篇博客分享了如何通过优化算法来解决寻找数组中最大连续1子串的问题。作者首先展示了原始代码,该代码在处理某些情况时超时。然后,他们介绍了使用滑动窗口的方法,成功地提高了代码效率并使其通过了所有测试用例。滑动窗口技巧在处理数组和字符串问题中经常能提高性能。
1741

被折叠的 条评论
为什么被折叠?



