news 2026/7/7 13:19:14

LeetCode 面试经典 150_回溯_组合(99_77_C++_中等)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
LeetCode 面试经典 150_回溯_组合(99_77_C++_中等)

LeetCode 面试经典 150_回溯_组合(99_77_C++_中等)

    • 题目描述:
    • 输入输出样例:
    • 题解:
      • 解题思路:
        • 思路一(回溯):
      • 代码实现
        • 代码实现(思路一(回溯)):

题目描述:

给定两个整数 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]]

提示:
1 <= n <= 20
1 <= k <= n

题解:

解题思路:

思路一(回溯):

1、组合问题可以想到回溯。
通过 示例1 中我们发现(仅看前一个位置时):
1 的组合有 [1,2],[1,3],[1,4]
2 的组合有 [2,3],[2,4]
3 的组合有 [3,4]
总结出一个规律,若 n 为前一个位置,后一个位置必定为 [n+1,n+2,…]

递归出口:组合个数 path.size()==k
递归体:组合问题需控制开始位置(start),防止重复(也就是总结出的规律),进入函数之前path.push_back(i);退出函数之后path.pop_back();

2、复杂度分析:
① 时间复杂度:O(C(n,k)⋅k),从n个元素中选择k个元素的组合数。
② 空间复杂度:O(C(n,k)⋅k),递归调用栈的空间O(k)(path)

代码实现

代码实现(思路一(回溯)):
classSolution{private:vector<vector<int>>ans;// 用于存储所有的组合结果vector<int>path;// 当前组合的路径// 回溯函数,生成从1到n中选择k个数字的组合voidbacktracking(intn,intk,intstart){// 如果当前组合的大小等于k,说明已找到一个组合if(path.size()==k){ans.push_back(path);// 将当前组合存入结果集return;// 返回,继续寻找其他组合}// 从start到n进行迭代,尝试添加数字到当前组合中for(inti=start;i<=n;i++){path.push_back(i);// 将当前数字添加到组合backtracking(n,k,i+1);// 递归调用,继续选择下一个数字path.pop_back();// 撤销选择,回溯}}public:// 主函数,初始化回溯过程并返回结果vector<vector<int>>combine(intn,intk){backtracking(n,k,1);// 从1开始进行组合生成returnans;// 返回所有组合结果}};

LeetCode 面试经典 150_回溯_组合(99_77)原题链接
欢迎大家和我沟通交流(✿◠‿◠)

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/7 1:14:19

如何在电脑上轻松控制安卓设备:py-scrcpy-client 完整指南

如何在电脑上轻松控制安卓设备&#xff1a;py-scrcpy-client 完整指南 【免费下载链接】py-scrcpy-client 项目地址: https://gitcode.com/gh_mirrors/py/py-scrcpy-client 想要在电脑上实时查看和控制安卓设备吗&#xff1f;py-scrcpy-client 这个强大的 Python 工具可…

作者头像 李华
网站建设 2026/7/7 0:39:14

5、超越CardSpace的身份元系统:第三方与开源解决方案探索

超越CardSpace的身份元系统:第三方与开源解决方案探索 在当今数字化时代,用户身份管理是互联网安全与便捷性的关键。除了常见的身份管理方式,还有许多第三方和开源解决方案值得关注。本文将深入介绍这些非微软的身份管理方案,为你展现一个更加多元的身份管理世界。 主要组…

作者头像 李华
网站建设 2026/7/7 17:39:44

如何用SlopeCraft地图像素生成器打造专业级Minecraft艺术作品

如何用SlopeCraft地图像素生成器打造专业级Minecraft艺术作品 【免费下载链接】SlopeCraft Map Pixel Art Generator for Minecraft 项目地址: https://gitcode.com/gh_mirrors/sl/SlopeCraft 还在为Minecraft中制作像素画而烦恼吗&#xff1f;想要将喜欢的图片完美转化…

作者头像 李华
网站建设 2026/7/7 13:17:06

QQ截图提取版:Windows系统终极截图解决方案

QQ截图提取版&#xff1a;Windows系统终极截图解决方案 【免费下载链接】QQScreenShot 电脑QQ截图工具提取版,支持文字提取、图片识别、截长图、qq录屏。默认截图文件名为ScreenShot日期 项目地址: https://gitcode.com/gh_mirrors/qq/QQScreenShot QQScreenShot是一款功…

作者头像 李华
网站建设 2026/7/7 12:29:39

n8n自动化测试实战指南:5大关键策略提升工作流稳定性

n8n自动化测试实战指南&#xff1a;5大关键策略提升工作流稳定性 【免费下载链接】n8n n8n 是一个工作流自动化平台&#xff0c;它结合了代码的灵活性和无代码的高效性。支持 400 集成、原生 AI 功能以及公平开源许可&#xff0c;n8n 能让你在完全掌控数据和部署的前提下&#…

作者头像 李华
网站建设 2026/7/7 16:52:17

探索Java游戏服务器新纪元:高性能分布式架构深度解析

探索Java游戏服务器新纪元&#xff1a;高性能分布式架构深度解析 【免费下载链接】ioGame 项目地址: https://gitcode.com/gh_mirrors/io/ioGame 在当今游戏开发领域&#xff0c;构建高性能、可扩展的游戏服务器已成为开发者的核心挑战。传统Java游戏服务器框架往往面临…

作者头像 李华