思想:滑动窗口
i:滑动窗口左边界
j:滑动窗口右边界
tsum:目标数值
sum:当前和
前提条件:i<=tsum//2 #python中 %取余 、// 求商 、/ 求值
-
当sum<tsum
窗口右边界右移,sum+j #注意此题中索引即为对应数值 -
当sum>tsum
窗口左边界右移,sum-i #注意此序列为递增序列,窗口无须左移 -
相等时
输出此时序列,并sum-=i,i+=1,寻找下一个连续正数序列 -
最后返回所有满足序列
class Solution:
def FindContinuousSequence(self, tsum):
# write code here
i=1
j=1
res=[]
sum=0
while i<= tsum//2:
if sum<tsum:
sum+=j
j+=1
elif sum>tsum:
sum-=i
i+=1
else:
arr=list(range(i,j))
res.append(arr)
sum-=i
i+=1
return res