77. 组合(中)

题目

  • 给定两个整数 n 和 k,返回范围 [1, n] 中所有可能的 k 个数的组合。

你可以按 任何顺序 返回答案。

示例 1:

输入:n = 4, k = 2
输出:
[[2,4],
[3,4],
[2,3],
[1,2],
[1,3],
[1,4],]

示例 2:

输入:n = 1, k = 1
输出:[[1]]

题解:回溯

  • 和46题全排列一样
class Solution:
    def combine(self, n: int, k: int) -> List[List[int]]:
        def backtrack(start: int, n: int, track: List[int], res: List[List[int]]):
            if len(track) == k:#最后加入到结果列表的判断
                res.append(track[:])
                return
            for i in range(start,n+1):
                if i in track:#排除不合法选择
                    continue
                track.append(i)  # 做选择
                backtrack(i + 1, n, track, res)#递归调用
                track.pop()  # 撤销选择

        res = []  # 结果列表
        track = []  # 选择列表
        backtrack(1, n, track, res)
        return res
posted @ 2024-01-18 16:45  Frommoon  阅读(1)  评论(0编辑  收藏  举报