题目要求
输入一个正整数 target ,输出所有和为 target 的连续正整数序列(至少含有两个数)。
序列内的数字由小到大排列,不同序列按照首个数字从小到大排列。
解题思路
双指针
设置一个left和right两个边界,不断移动两边界。
class Solution(object):
def findContinuousSequence(self, target):
"""
:type target: int
:rtype: List[List[int]]
"""
res = []
l, r = 1, 2
while l < r:
# 等于target,res中添加。
if (r-l+1)*(l+r)/2 == target:
res.append(list(range(l, r+1)))
r += 1
l += 1
# 若比target大。
elif (r-l+1)*(l+r)/2 > target:
l += 1
# 若比target小。
elif (r-l+1)*(l+r)/2 < target:
r += 1
return res