拿到手可能一下感觉看起来很简单但是不知道怎么做,但是细想一下,就发现不难,遍历就完事儿了, sum1表示当前累加值,res1表示当前累加值满足 sum1 == tsum情况下的序列,res用来保存所有满足情况的序列
1.首先至少要是两个数相加得到 tsum,那么遍历时候只需要遍历 到 (tsum+1)//2 就可以了,如果 9=4+5就是最大了,不可能还有超过 tsum一半的连续值相加的情况
2.然后在调试的时候发现会报错,因为当tsum<3的时候,其实不可能存在满足条件的情况,所以可以直接列出来降低复杂度
并且因为是for i in range(1, (tsum+1)//2) 所以出来的序列一定满足条件 序列内按照从小至大的顺序,序列间按照开始数字从小到大的顺序
# -*- coding:utf-8 -*-
class Solution:
def FindContinuousSequence(self, tsum):
# write code here
res = []
if tsum < 3:
return []
for i in range(1, (tsum+1)//2):
sum1 = 0
res1 = []
while sum1 < tsum:
sum1 += i
res1.append(i)
i += 1
if sum1 == tsum:
res.append(res1)
return res
class Solution:
def FindContinuousSequence(self, tsum):
# write code here
res = []
if tsum < 3:
return []
for i in range(1, (tsum+1)//2):
sum1 = 0
res1 = []
while sum1 < tsum:
sum1 += i
res1.append(i)
i += 1
if sum1 == tsum:
res.append(res1)
return res