41.和为S的连续正数序列

tech2023-08-01  108

文章目录

1.题目2.思路3.代码

1.题目

输出所有和为S的连续正数序列。序列内按照从小至大的顺序,序列间按照开始数字从小到大的顺序。

思路:维护两个指针,一个指针指向这个连续正数序列的开始,一个指向连续正数序列的结束,判断当前的序列和与目标的关系,不断更新这两个指针的位置。

2.思路

思路:维护两个指针,一个指针指向这个连续正数序列的开始,一个指向连续正数序列的结束,判断当前的序列和与目标的关系,不断更新这两个指针的位置。 (1)当连续序列和curSum==S时,表明找到合适序列,将序列存入列表;指向序列尾部的j指针往后移一位,将所指位置的数字加到curSum中,方便下一次的判断; (2)当curSum>S时,从现有连续序列之和curSum中减去i,并将i+1; (3)当curSum<S时,j指针往后移一位,执行j+1,curSum加上j。

3.代码

# -*- coding:utf-8 -*- class Solution: def FindContinuousSequence(self, tsum): # write code here res = [] i = 1 j = 2 curSum = i+j while i<=tsum/2: if curSum == tsum: res.append(range(i, j+1)) j = j+1 curSum +=j elif curSum > tsum: curSum -= i i = i+1 else: j +=1 curSum += j return res
最新回复(0)