
难度:Medium
解题思路:因为元素可以无限制的使用,所以可以用递归的方式求解。
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
|
class Solution { public: vector<vector<int>> combinationSum(vector<int>& candidates, int target) { vector<vector<int>> ret; vector<int> cur_vec; combination_sum_recur(ret,candidates,target,0,cur_vec); return ret; } void combination_sum_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++) { cur_vec.push_back(candidates[i]); combination_sum_recur(ret,candidates,target-candidates[i],i,cur_vec); cur_vec.pop_back();//因为程序不是并行的,所以把元素pop掉,original可以继续使用 } } } };
|
运行结果:16ms,超过64.59%
近期评论