mirror of
https://github.com/youngyangyang04/leetcode-master.git
synced 2025-07-25 09:42:16 +08:00
Update
This commit is contained in:
46
problems/0077.组合.md
Normal file
46
problems/0077.组合.md
Normal file
@ -0,0 +1,46 @@
|
||||
# 第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;
|
||||
}
|
||||
};
|
||||
```
|
Reference in New Issue
Block a user