用例
输入 | 输出 |
---|---|
1 | [] |
2 | [] |
3 | [[1, 2]] |
4 | [] |
5 | [[2, 3]] |
6 | [[1,2,3]] |
7 | [[3,4]] |
8 | [] |
9 | [[2, 3, 4], [4, 5]] |
10 | [[1, 2, 3, 4]] |
100 | [[9, 10, 11, 12, 13, 14, 15, 16], [18, 19, 20, 21, 22]] |
解题思路
python 代码
# -*- coding:utf-8 -*-
class Solution:
def FindContinuousSequence(self, tsum):
# write code here
if tsum<=1:
return []
i = 1
j = 2
res = []
while j>i:
# 由于是连续的,差为1的一个序列,那么求和公式是(a0+an)*n/2
cur = ((j-i+1)*(i+j))/2
# 相等,那么就将窗口范围的所有数添加进结果集
if cur == tsum:
res.append(list(range(i,j+1)))
i += 1
# 如果当前窗口内的值之和小于sum,那么右边窗口右移一下
elif cur < tsum:
j += 1
# 如果当前窗口内的值之和大于sum,那么左边窗口右移一下
elif cur > tsum:
i += 1
return res
s = Solution()
result = s.FindContinuousSequence(100)
print(result)