leetcode_combination_sum 发表于 2016-12-02 难度:Medium 解题思路:因为元素可以无限制的使用,所以可以用递归的方式求解。 1234567891011121314151617181920212223242526class 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%