40. Combination Sum II
原创
©著作权归作者所有:来自51CTO博客作者Shengjianjun的原创作品,请联系作者获取转载授权,否则将追究法律责任
用39题一样的回溯法做,感觉比30简单= =
class Solution {
public:
vector<vector<int>>res;
void Retrospective(vector<int> candidates, vector<int>temp, int idx,int target,int sum) {
if (sum == target) {
sort(temp.begin(), temp.end());
res.push_back(temp);
return;
}
for (int i = idx; i < candidates.size(); ++i) {
if (sum + candidates[i] <= target) {
temp.push_back(candidates[i]);
Retrospective(candidates, temp, i + 1, target, sum + candidates[i]);
temp.pop_back();
}
}
}
vector<vector<int>> combinationSum2(vector<int>& candidates, int target) {
res.clear();
vector<int>temp;
Retrospective(candidates, temp, 0, target, 0);
sort(res.begin(), res.end());
res.erase(unique(res.begin(), res.end()), res.end());
return res;
}
};