class Solution {
public:
vector<vector<int>> combinationSum(vector<int>& candidates, int target) {
sort(candidates.begin(),candidates.end());
copy(candidates.begin(),candidates.end(),back_inserter(nums));
this->target = target;
vector<int> vec;
use.resize(candidates.size());
dfs(-1,0,vec);
return ret;
}
private:
vector<int> use;
vector<int> nums;
vector<vector<int>> ret;
int target;
void dfs(int last,int sum,vector<int>& vec)
{
for(int i = last+1;i<nums.size();i++)
{
if((sum+nums[i]) == target){
vec.push_back(nums[i]);
if(find(ret.begin(),ret.end(),vec) == ret.end())
ret.push_back(vec);
vec.pop_back();
}
else if((sum+nums[i]) > target)
return ;
else {
vec.push_back(nums[i]);
dfs(i-1,sum+nums[i],vec);
vec.pop_back();
}
}
}
};
LeetCode 39. Combination Sum
最新推荐文章于 2021-08-19 16:05:47 发布