本文共 1172 字,大约阅读时间需要 3 分钟。
给定一个数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。
candidates 中的每个数字在每个组合中只能使用一次。
说明:
所有数字(包括目标数)都是正整数。
解集不能包含重复的组合。class Solution { public: vector> combinationSum2(vector & candidates, int target) { sort(candidates.begin(),candidates.end()); vector > res; vector ass; DFS(res,candidates,target,ass, 0, 0); return res; } void DFS(vector > &res,vector & candidates,int target,vector & ass, int sum,int position){ if(sum == target){ res.push_back(ass); } else{ for(int i=position;i < candidates.size();i++){ if(i > position && candidates[i]==candidates[i-1]) continue; if(sum+candidates[i]<=target){ ass.push_back(candidates[i]); DFS(res,candidates,target,ass,sum+candidates[i], i+1); ass.pop_back(); } } } }};
通过时间:
转载地址:http://riemb.baihongyu.com/