剑指 Offer 57 - II. 和为s的连续正数序列

题目:输入一个正整数 target ,输出所有和为 target 的连续正整数序列(至少含有两个数)。  简单

序列内的数字由小到大排列,不同序列按照首个数字从小到大排列

方法:滑动窗口  时间复杂度O(n)  空间复杂度O(1)  

def findContinuousSequence(target):
        """
        :type target: int
        :rtype: List[List[int]]
        """
        i,j,s = 1,2,3
        res = []
        while i < j:
            if s == target:
                res.append(list(range(i,j+1)))
            if s >= target:
                s -= i    # 千万注意这里的先后顺序,下面也是
                i += 1
            else:
                j += 1
                s += j
        return res

 

posted @ 2022-07-30 17:21  Liang-ml  阅读(9)  评论(0)    收藏  举报