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
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章