Problem
Given two integers n and k, return all possible combinations of k numbers out of 1 … n.
You may return the answer in any order.
Algorithm
dfs.
Code
class Solution:
def combine(self, n: int, k: int) -> List[List[int]]:
ans = []
visit = [0] * n
save = [0] * k
def dfs(j, d, n, k):
if d == k:
ans.append(save.copy())
return
for i in range(j, n):
if not visit[i]:
save[d] = i+1
visit[i] = 1
dfs(i+1, d+1, n, k)
visit[i] = 0
dfs(0, 0, n, k)
return ans