Skip to content

Commit 7581d4d

Browse files
Add files via upload
1 parent 7aff040 commit 7581d4d

File tree

1 file changed

+40
-0
lines changed

1 file changed

+40
-0
lines changed

Combinations/Combinations.cpp

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
// 典型的回溯法
2+
3+
// Runtime: 84 ms, faster than 66.79% of C++ online submissions for Combinations.
4+
// Memory Usage: 11.8 MB, less than 66.84% of C++ online submissions for Combinations.
5+
6+
class Solution
7+
{
8+
public:
9+
vector<vector<int>> combine(int n, int k)
10+
{
11+
// 边界条件处理
12+
if (k <= 0 || n <= 0 || k > n)
13+
return vector<vector<int>>();
14+
15+
vector<int> candidate(n, 0);
16+
for (int i = 0; i < n; ++i)
17+
candidate[i] = i + 1;
18+
19+
vector<vector<int>> res;
20+
vector<int> temp;
21+
22+
helper(res, candidate, temp, 0, k);
23+
return res;
24+
}
25+
private:
26+
void helper(vector<vector<int>>& res, vector<int>& candidate, vector<int>& temp, int start, int k)
27+
{
28+
if (temp.size() == k)
29+
{
30+
res.push_back(temp);
31+
return ;
32+
}
33+
for (int i = start; i < candidate.size(); ++i)
34+
{
35+
temp.push_back(candidate[i]);
36+
helper(res, candidate, temp, i + 1, k);
37+
temp.pop_back();
38+
}
39+
}
40+
};

0 commit comments

Comments
 (0)