Keshawn_lu's Blog

Leetcode 77. 组合

字数统计: 210阅读时长: 1 min
2020/09/08 Share

题目简介:

给定两个整数 nk,返回 1 … n 中所有可能的 k 个数的组合。

示例:

1
2
3
4
5
6
7
8
9
10
输入: n = 4, k = 2
输出:
[
[2,4],
[3,4],
[2,3],
[1,2],
[1,3],
[1,4],
]

思路:

又是一道回溯题,需要注意的是由于不能重复,所以每次遍历时需要从上一个数字的后面开始遍历

所以增加一个参数pos用来定义遍历到的位置情况。

代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
class Solution {
public:

vector<vector<int>> res;

void dfs(int n, int k, int pos, vector<int>& temp){

if(temp.size() == k){

res.push_back(temp);
return;
}

for(int i = pos; i <= n; i++){

temp.push_back(i);
dfs(n, k, i + 1, temp); //关键i+1
temp.pop_back();
}
}


vector<vector<int>> combine(int n, int k) {

vector<int> temp;
dfs(n, k, 1, temp);

return res;
}
};
CATALOG
  1. 1. 题目简介:
  2. 2. 思路:
  3. 3. 代码如下: