当前位置: 首页 > 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;}
};

相关文章:

  • SQL进阶知识:七、数据库设计
  • 怎样通过互联网访问内网 SVN (版本管理工具)提交代码更新?
  • 第13章:MCP服务端项目开发实战:向量检索
  • JAVA | 聚焦 OutOfMemoryError 异常
  • 究竟什么是自动化测试?
  • ecovadis认证需要提供哪些文件?ecovadis认证优势是什么?
  • 传感器测量(图片流程)
  • 经典算法 区间统计种类
  • Opencv图像处理:旋转、打包、多图像匹配
  • TinyVue v3.22.0 正式发布:深色模式上线!集成 UnoCSS 图标库!TypeScript 类型支持全面升级!
  • Python 面向对象练习
  • 日内组合策略思路
  • 强化学习(Reinforcement Learning, RL)和深度学习(Deep Learning, DL)
  • 数据结构——栈与队列
  • 简单场景下的目标关联算法:GNN全局最近邻与匈牙利算法
  • 制作一款打飞机游戏20:敌人被击中时的视觉效果
  • 理解js函数(Ⅱ)
  • 嵌入式Linux驱动开发:LED实验
  • Spring Boot中自定义404异常处理问题学习笔记
  • Android学习总结之Room篇
  • 【社论】以“法治之盾”护航每一份创新
  • 公安部知识产权犯罪侦查局:侦破盗录传播春节档院线电影刑案25起
  • 神舟二十号载人飞船与空间站组合体完成自主快速交会对接
  • 上海五五购物节首次推出商圈精品推广节,9个商圈近百个商场参与促销
  • 湖南永州公安全面推行“项目警官制”,为重点项目建设护航
  • “沉默”的智驾:余承东不喊“遥遥领先”,何小鹏连夜改口 | 电厂