給定整數 n 和 k,返回 1...n 中所有可能的 k 個數的組合。
從 1 開始嘗試選擇或不選擇當前數字。若已選 k 個,加入結果。若剩餘數字不足以湊齊 k 個,剪枝返回。
class Solution:
def combine(self, n, k):
res = []
def backtrack(start, path):
if len(path) == k:
res.append(path[:])
return
for i in range(start, n+1):
path.append(i)
backtrack(i+1, path)
path.pop()
backtrack(1, [])
return res