其他分享
首页 > 其他分享> > 77. 组合(DFS)

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 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 };

 

标签:tmp,组合,示例,int,DFS,77,dfs,ans
来源: https://www.cnblogs.com/MGFangel/p/16339451.html