1. 程式人生 > >LeetCode77 組合 2018.10.19

LeetCode77 組合 2018.10.19

題幹:

給定兩個整數 n 和 k,返回 1 ... 中所有可能的 k 個數的組合。

示例:

輸入: n = 4, k = 2

輸出:

[

  [2,4],

  [3,4],

  [2,3],

  [1,2],

  [1,3],

  [1,4],

]

解題思路:利用到了回溯的思想,輸出的組合首先是要遞增,先判斷長度是否等於k,等於k直接加入輸出列表,小於k則通過迴圈將後面的數字加入組合中

class Solution:
    def combine(self, n, k):
        """
        :type n: int
        :type k: int
        :rtype: List[List[int]]
        """
        result = []
        out = []
        self.helper(n, k, 1, out, result)
        return result

    def helper(self, n, k, level, out, result):
        if len(out) == k:
            result.append(out[:])
        for i in range(level, n + 1, 1):
            out.append(i)
            self.helper(n, k, i + 1, out, result)
            out.pop()