Skip to content

Commit 7aff040

Browse files
Add files via upload
1 parent 5119d7e commit 7aff040

File tree

1 file changed

+43
-0
lines changed

1 file changed

+43
-0
lines changed

Combination Sum/Combination_Sum.cpp

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
// 典型的回溯法
2+
// Runtime: 8 ms, faster than 98.32% of C++ online submissions for Combination Sum.
3+
// Memory Usage: 9.4 MB, less than 80.28% of C++ online submissions for Combination Sum.
4+
5+
class Solution
6+
{
7+
public:
8+
vector<vector<int>> combinationSum(vector<int>& candidates, int target)
9+
{
10+
sort(candidates.begin(), candidates.end());
11+
if (candidates.size() == 0 || candidates[0] > target)
12+
return vector<vector<int>>();
13+
14+
vector<vector<int>> res;
15+
vector<int> temp;
16+
17+
helper(candidates, res, temp, target, 0, 0);
18+
return res;
19+
}
20+
private:
21+
void helper(vector<int>& candidates, vector<vector<int>>& res, vector<int>& temp, int target, int curSum, int start)
22+
{
23+
if (curSum == target)
24+
{
25+
res.push_back(temp);
26+
return ;
27+
}
28+
29+
for (int i = start; i < candidates.size(); ++i)
30+
{
31+
if (curSum + candidates[i] > target)
32+
break;
33+
34+
curSum += candidates[i];
35+
temp.push_back(candidates[i]);
36+
37+
helper(candidates, res, temp, target, curSum, i);
38+
39+
curSum -= candidates[i];
40+
temp.pop_back();
41+
}
42+
}
43+
};

0 commit comments

Comments
 (0)