这里是引用
组合
77. 组合
给定两个整数 n 和 k,返回范围 [1, n] 中所有可能的 k 个数的组合。
你可以按 任何顺序 返回答案。
ps:感谢代码随想录~
class Solution:
def combine(self, n: int, k: int) -> List[List[int]]:
tmp = []
ans = []
def backtracking(n, k, start):
if len(tmp) == k:
ans.append(tmp[:]) #tmp()不可以 做一次拷贝s.t.独立
return
# 需要做剪枝: 当i>=n-(k-len(tmp))+2时不够长度k,不需要继续下去
# for i in range(start, n + 1):
for i in range(start, n-(k-len(tmp))+2):
tmp.append(i)
backtracking(n, k, i + 1)
tmp.pop()
return ans
return backtracking(n, k, 1)