LeetCodeEasy-【面试题57 - II. 和为s的连续正数序列】

输入一个正整数 target ,输出所有和为 target 的连续正整数序列(至少含有两个数)。
序列内的数字由小到大排列,不同序列按照首个数字从小到大排列。

示例 1:
输入:target = 9
输出:[[2,3,4],[4,5]]

示例 2:
输入:target = 15
输出:[[1,2,3,4,5],[4,5,6],[7,8]]

限制:
1 <= target <= 10^5

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/he-wei-sde-lian-xu-zheng-shu-xu-lie-lcof
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

思路1:双指针

直接用双指针来控制连续序列的头部和尾部,一前一后,向前挪动,保证和为目标值,如果和小了,则将前指针前移,如果大了,将后指针前移。
在这里插入图片描述

class Solution:
    def findContinuousSequence(self, target: int) -> List[List[int]]:
        i = 1
        j = 2
        sum = i + j
        ans = []
        while i < j:
            if sum == target:
                ans.append([_ for _ in range(i, j + 1)])
                j += 1
                sum += j
            elif sum < target:
                j += 1
                sum += j
            else:
                sum -= i
                i += 1 
        return ans
展开阅读全文
©️2019 CSDN 皮肤主题: 书香水墨 设计师: CSDN官方博客
应支付0元
点击重新获取
扫码支付

支付成功即可阅读