经典combinations。
用模版
class Solution:
def combine(self, n: int, k: int) -> List[List[int]]:
def dfs(n, k, progress, path, result):
if len(path) == k:
result.append(path[:])
return
for i in range(progress, n):
path.append(i+1)
dfs(n, k, i+1, path, result)
path.pop()
result=[]
dfs(n, k, 0, [], result)
return result
或者不喜欢参数传递的版本
class Solution:
def combine(self, n: int, k: int) -> List[List[int]]:
def dfs(progress):
if len(path) == k:
result.append(path[:])
return
for i in range(progress, n):
path.append(i+1)
dfs(i+1)
path.pop()
path = []
result=[]
dfs(0)
return result