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 @   Frommoon  阅读(7)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· winform 绘制太阳,地球,月球 运作规律
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
点击右上角即可分享
微信分享提示