题目描述
和39题基本一样,只需要稍微改一点,每个数只能用一次。可以判断去重,也可以用set去重。
C++ 代码
class Solution {
public:
vector<vector<int>> combinationSum2(vector<int>& candidates, int target) {
set<vector<int>> res;
vector<int> path;
sort(candidates.begin(), candidates.end());
dfs(candidates, target, 0, path, res);
return vector<vector<int>> (res.begin(), res.end());
}
void dfs(vector<int>&a, int target, int start, vector<int>&path, set<vector<int>>&res) {
if (target < 0) return;
if (target == 0) {
res.insert(path);
return;
}
for (int i = start; i < a.size(); i ++) {
path.push_back(a[i]);
dfs(a, target - a[i], i + 1, path, res);//唯一的区别是上一题这里是从当前位置i枚举,这里从i+1枚举。
path.pop_back();
}
}
};
你的也是TLE
### TLE,我麻了