当前位置: 首页 > news >正文

(回溯) LeetCode 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]]

提示:

  • 1 <= n <= 20
  • 1 <= k <= n

二. 解题思路

本题意思是给定一个数字n 以及 k ,在1到n 中找到组合大小位k 的所有可能输出,可能有些同学想到了使用for循环去遍历,但是单传使用for循环去嵌套遍历有两个缺点:(1)首先你不知道k的大小,不能够确定各for循环的嵌套次数;(2)其次,即便你知道了k的值,使用for循环去嵌套遍历,那如果题目中给你100个数,k的值为50,让你在100个数中找出所有组合大小为50的组合数,你难道还想用50层for循环去遍历吗???当然不行,那么这里我们就选择回溯:

        回溯其实也是for循环的一种体现,通过递归的思想实现对组合数的判断,也是一种暴力的做法,不过比for循环好。

话不多说!!!上代码!!

三. 代码

class Solution {
public:vector<vector<int>> res;vector<int> path;void back(int n, int k, int startindex){if(path.size() == k){        //如果达到了组合数的要求就退出res.push_back(path);return;}for(int i = startindex; i <= n; i++){path.push_back(i);back(n, k, i + 1);path.pop_back();       // 回溯:到上一个阶段}}vector<vector<int>> combine(int n, int k) {back(n, k, 1);return res;}
};

四. 总结

对于回溯算法,本身比较抽象,也晦涩难懂,需要多加练习和理解,掌握原理即可,加油!!

时间复杂度:O(N∗K);

空间复杂度:O(N∗K)。

喜欢的话给个关注吧!!

相关文章:

  • Node.js中判断是文件还是文件夹的多种方法
  • Web语义化及实际应用
  • 奥运科技观察:AI PC,如何成为当代体育精神的数字捍卫者?
  • 搭建知识中台:让企业告别低效率
  • proc文件系统
  • 【MySQL】mysql异常宕机无法启动处理过程
  • 探索数据可视化,数据看板在各行业中的应用
  • (贪心 + 双指针) LeetCode 455. 分发饼干
  • 16 交换机命令行配置
  • TLE8386-2EL:汽车级DC-DC转换器中文资料书
  • 【C++】设计模式 — 从零开始认识单例模式
  • 【Redis】主从复制
  • 【Qt】QPluginLoader 类学习
  • 【社区团购技术实现】
  • 【问题】容器部署场景Spring Bean偶尔循环依赖问题
  • IE9 : DOM Exception: INVALID_CHARACTER_ERR (5)
  • 分享的文章《人生如棋》
  • 时间复杂度分析经典问题——最大子序列和
  • [case10]使用RSQL实现端到端的动态查询
  • Android开发 - 掌握ConstraintLayout(四)创建基本约束
  • create-react-app做的留言板
  • electron原来这么简单----打包你的react、VUE桌面应用程序
  • gf框架之分页模块(五) - 自定义分页
  • HTTP传输编码增加了传输量,只为解决这一个问题 | 实用 HTTP
  • HTTP中GET与POST的区别 99%的错误认识
  • iOS仿今日头条、壁纸应用、筛选分类、三方微博、颜色填充等源码
  • MySQL常见的两种存储引擎:MyISAM与InnoDB的爱恨情仇
  • nginx 负载服务器优化
  • 包装类对象
  • 关于使用markdown的方法(引自CSDN教程)
  • 如何将自己的网站分享到QQ空间,微信,微博等等
  • 详解NodeJs流之一
  • 小程序、APP Store 需要的 SSL 证书是个什么东西?
  • Redis4.x新特性 -- 萌萌的MEMORY DOCTOR
  • ​RecSys 2022 | 面向人岗匹配的双向选择偏好建模
  • ​总结MySQL 的一些知识点:MySQL 选择数据库​
  • #include到底该写在哪
  • (6)添加vue-cookie
  • (Bean工厂的后处理器入门)学习Spring的第七天
  • (C#)获取字符编码的类
  • (Mirage系列之二)VMware Horizon Mirage的经典用户用例及真实案例分析
  • (附源码)ssm基于jsp高校选课系统 毕业设计 291627
  • (四十一)大数据实战——spark的yarn模式生产环境部署
  • (一)WLAN定义和基本架构转
  • (转)【Hibernate总结系列】使用举例
  • .NET Core 和 .NET Framework 中的 MEF2
  • .net dataexcel winform控件 更新 日志
  • .NET Framework .NET Core与 .NET 的区别
  • .NET 同步与异步 之 原子操作和自旋锁(Interlocked、SpinLock)(九)
  • .NET导入Excel数据
  • .NET连接MongoDB数据库实例教程
  • .py文件应该怎样打开?
  • @Bean有哪些属性
  • @Builder用法
  • [20190113]四校联考