您的位置:首页 > 其它

LeetCode--Combination Sum II

2014-08-03 21:06 405 查看
思路:类似于上一题,但是加了一个index数组记录结果里面已经存放的元素索引,

用来判断当前的元素是否和上一个相同并且上一个是否使用过。

主要为了解决重复解的问题。

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