题目:
组合:给定两个整数 n 和 k,返回 1 ... n 中所有可能的 k 个数的组合。
思路:
回溯算法的框架。
程序:
class Solution:
def combine(self, n: int, k: int) -> List[List[int]]:
def backtrack(inputData, k, auxiliary, result):
if len(auxiliary) == k:
result.append(auxiliary[:])
return
for index in range(len(inputData)):
if len(auxiliary) >= 1:
if inputData[index] < auxiliary[-1]:
continue
auxiliary.append(inputData[index])
backtrack(inputData[: index] + inputData[index + 1 :], k, auxiliary, result)
auxiliary.pop()
inputData = [index for index in range(1, n + 1)]
result = []
auxiliary = []
backtrack(inputData, k, auxiliary, result)
return result