mirror of
https://github.com/youngyangyang04/leetcode-master.git
synced 2025-07-25 09:42:16 +08:00
47 lines
933 B
Markdown
47 lines
933 B
Markdown
# 第77题. 组合
|
||
给定两个整数 n 和 k,返回 1 ... n 中所有可能的 k 个数的组合。
|
||
示例:
|
||
|
||
输入: n = 4, k = 2
|
||
输出:
|
||
[
|
||
[2,4],
|
||
[3,4],
|
||
[2,3],
|
||
[1,2],
|
||
[1,3],
|
||
[1,4],
|
||
]
|
||
|
||
# 思路
|
||
|
||
|
||
# C++ 代码
|
||
|
||
```
|
||
class Solution {
|
||
private:
|
||
vector<vector<int>> result;
|
||
void backtracking(int n, int k, vector<int>& vec, int startIndex) {
|
||
if (vec.size() == k) {
|
||
result.push_back(vec);
|
||
return;
|
||
}
|
||
// 这个for循环有讲究,组合的时候 要用startIndex,排列的时候就要从0开始
|
||
// 这个过程好难理解,需要画图
|
||
for (int i = startIndex; i <= n; i++) {
|
||
vec.push_back(i);
|
||
backtracking(n, k, vec, i + 1);
|
||
vec.pop_back();
|
||
}
|
||
}
|
||
public:
|
||
|
||
vector<vector<int>> combine(int n, int k) {
|
||
vector<int> vec;
|
||
backtracking(n, k, vec, 1);
|
||
return result;
|
||
}
|
||
};
|
||
```
|