跳到主要内容

Combinations

描述

Given two integers n and k, return all possible combinations of k numbers out of 1 ... n.

For example, If n = 4 and k = 2, a solution is:

[
[2,4],
[3,4],
[2,3],
[1,2],
[1,3],
[1,4],
]

递归

# Combinations
# 深搜,递归
# 时间复杂度O(n!),空间复杂度O(n)
class Solution:
def combine(self, n: int, k: int) -> list[list[int]]:
result = []
path = []
self.dfs(n, k, 1, 0, path, result)
return result

# start,开始的数, cur,已经选择的数目
def dfs(self, n: int, k: int, start: int, cur: int, path: list[int], result: list[list[int]]) -> None:
if cur == k:
result.append(path[:])
for i in range(start, n + 1):
path.append(i)
self.dfs(n, k, i + 1, cur + 1, path, result)
path.pop()

相关题目