77. 组合(DFS)

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 class Solution {
 2 public:
 3     vector<vector<int>> ans;
 4     vector<int> tmp;
 5     void dfs(int i, int n, int k) { // 从i开始到n,长度为k的数组组合
 6         if (tmp.size() == k) {
 7             ans.emplace_back(tmp);
 8         } else {
 9             if (i <= n) {
10                 tmp.emplace_back(i);
11                 dfs(i + 1, n, k);
12                 tmp.pop_back(); // 回溯
13                 dfs(i + 1, n, k);
14             }
15         }
16         return;
17     }
18     vector<vector<int>> combine(int n, int k) {
19         dfs(1, n, k);
20         return ans;
21     }
22 };
复制代码

 

posted @   跳动的休止符  阅读(30)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
点击右上角即可分享
微信分享提示