LeetCode77 組合 2018.10.19
阿新 • • 發佈:2018-12-16
題幹:
給定兩個整數 n 和 k,返回 1 ... n 中所有可能的 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()