总结:
滑动窗口这个可以僚机一下
o(n2)的时间复杂度的算法
def fun1(target,nums):#o(n2)的代码超时了
'''
这个怎么说呢
如果要写一个o(n2)的算法我觉得是很简单的
现在就来写一个
:param target:
:param nums:
:return:
'''
max_ = float("inf") # 开到最大长度
bijiao = float("inf")
for i in range(len(nums)):
sum_ = 0
len_ = 0
for j in reversed(range(i + 1)):
sum_ += nums[j]
len_ += 1
if sum_ >= target:
if max_ > len_:
max_ = len_
break
if max_ == bijiao:
return 0
else:
return max_
print(fun1(15,[1,2,3,4,5]))
滑动窗口的的方法还是比较好想的
这个二分查找我不是很想看等到后面揣摩揣摩
def fun2(target,nums):
'''
o(n)算法的思路并不难
相对于o(nlogn)的算法还要简单一些
:param target:
:param nums:
:return:
'''
start=0
end=0
sum_=0
res=len(nums)+1
while end<len(nums):
sum_+=nums[end]
while sum_>=target:
res=min(res,end-start+1)
sum_-=nums[start]
start+=1
end+=1
if res==len(nums)+1:
return 0
else:
return res