leetcode_combination_sum_ii

难度:Medium

解题思路:是CombinationSum系列。不重复使用元素就可以了。
代码如下:

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
class Solution {
public:
vector<vector<int>> combinationSum2(vector<int>& candidates, int target) {
sort(candidates.begin(), candidates.end());
vector<vector<int>> ret;
vector<int> cur_vec;
combination_sum_recur(ret,candidates,target,0,cur_vec);
return ret;
}
void combination_sum2_recur(vector<vector<int>> &ret, vector<int>& candidates, int target, int index, vector<int>& cur_vec)
{
if(target == 0)
{
ret.push_back(cur_vec);
}
else if(target > 0)
{
for(int i = index; i < candidates.size(); i++)
{
if(i-1 >= index && candidates[i-1] == candidates[i])
continue;
cur_vec.push_back(candidates[i]);
combination_sum_recur(ret,candidates,target-candidates[i],i+1,cur_vec);
cur_vec.pop_back();
}
}

}
};

运行结果:16ms,超过36.98%