您的位置:首页 > 其它

LeetCode--Combination Sum

2014-08-03 16:42 148 查看
题目链接:

https://oj.leetcode.com/problems/combination-sum/

思路:

题目要求合并的答案需要升序排序。所以先排序,然后每次选一个,递归处理。

注意:每个元素可以多次,然后不能有重复的答案,所以碰到处理过的元素就不处理了。

class Solution {
public:
vector<vector<int> >ans;
vector<vector<int> > combinationSum(vector<int> &candidates, int target) {
if(candidates.size() == 0)
return ans;
sort(candidates.begin(),candidates.end());
deque<int> res;
calSum(candidates,target,0,res);
return ans;
}
void calSum(vector<int> &candidates,int target,int s,deque<int> &res)
{
if(target < 0)
return;
if(target == 0)
{
vector<int> restmp(res.begin(),res.end());
ans.push_back(restmp);
return;
}
int i;
for(i = s ; i < candidates.size() ; ++i)
{
if(i > 0 && (candidates[i] == candidates[i-1]) )
continue;
res.push_back(candidates[i]);
calSum(candidates,target-candidates[i],i,res);
res.pop_back();
}
return;
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: