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

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

思路

        这道题按照我们正常的思路就是从一开始和1后面的其他数字组合,然后再从2开始和后面的数字组合...代码中我们也可以采用这样的思路,按顺序排列可以防止有遗漏或者重复。从起始数字从1开始,把他加入自己数组,接着递归处理后续数字生成更多组合;如果临时组合长度达到k,就把他作为一个有效组合保存到res;每次递归返回后,把最后添加的数字删除,尝试其他可能,直到遍历完所有可能的组合,最终就能得到所有组合。

代码

class Solution {
public:vector<vector<int>> res;//结果数组vector<int> p;//子集数组void hs(int n,int k,int s){if(p.size()==k)//子集数组中的数达到k个就有了一个结果{res.push_back(p);return;}for(int i=s;i<=n-(k-p.size())+1;i++)//n-(k-p.size())+1是当前位置所能选择的最大数字{p.push_back(i);//处理节点hs(n,k,i+1);//进入递归,继续生成子集p.pop_back();//删除p中最后添加的数字}}vector<vector<int>> combine(int n, int k) {hs(n,k,1);return res;}
};

http://www.xdnf.cn/news/113311.html

相关文章:

  • 【OpenGL with C++】1.使用CMake+GLFW+GLAD在Window搭建项目
  • Linux系统之----进程优先级、调度与切换
  • 基于 EFISH-SBC-RK3588 的无人机多光谱/红外热成像边缘计算方案
  • MyBatis操作数据库---从入门到理解
  • Python爬虫第19节-动态渲染页面抓取之Splash使用下篇
  • centos7使用certbot完成nginx ssl证书续期
  • 最高支持高速L3商用,华为发布ADS 4智驾系统
  • 【OSG学习笔记】Day 8: 纹理贴图——赋予模型细节
  • MCU通信接口技术解析:UART、SPI与I2C
  • 【云计算】云计算中IaaS、PaaS、SaaS介绍
  • 基于 springboot+vue+elementui 的办公自动化系统设计(
  • 系统与网络安全------弹性交换网络(3)
  • Unity MR开发:探索混合现实的无限可能 (VisionPro和HoloLens 2 对比)
  • 【KWDB 创作者计划】_上位机知识篇---Github
  • 虚拟机详解
  • 第十天 Shader编程:编写简单表面着色器 Addressable资源管理系统 DOTS(面向数据技术栈)入门
  • 计算机网络学习笔记
  • Rust实现高性能目录扫描工具ll的技术解析
  • java面向对象编程【基础篇】之基础语法
  • 【产品经理从0到1】Axure介绍
  • Windows申请苹果开发者测试证书Uniapp使用
  • 基于 Spring Boot 的银行柜台管理系统设计与实现(源码+文档+部署讲解)
  • C语言之阶乘2.0
  • 区块链技术:深入共识算法、智能合约与DApps的架构奥秘
  • JAVA设计模式——(五)享元模式(Flyweight Pattern)
  • 快速配置linux远程开发-go语言
  • Web3中心化交易所钱包-批量地址生成业务
  • 测试基础笔记第十一天
  • 第十四届蓝桥杯省B.砍树
  • 如何创建极狐GitLab 议题?