由于连续正整数的个数不确定,所以用两个角标,来控制个数,最后求和。
针对数值操作:
class Solution:
def FindContinuousSequence(self, tsum):
l, r, sum, res = 1, 2, 3, []
while l<r:
if sum>tsum:
sum -= l
l += 1
else:
if sum==tsum:
res.append([i for i in range(l,r+1)])
r += 1
sum += r
return res
针对数组操作:
class Solution:
def FindContinuousSequence(self,tsum):
if tsum<3:
return []
res,arr=[],[1,2]
middle=tsum//2+1
while arr and arr[0]<middle:
if sum(arr)<tsum:
arr.append(arr[-1]+1)
elif sum(arr)>tsum:
arr.pop(0)
else:
res.append([i for i in arr])
arr.append(arr[-1] + 1)
arr.pop(0)
if not arr:
return []
return res