首页 > 代码库 > LeetCode--Combination Sum II
LeetCode--Combination Sum II
思路:类似于上一题,但是加了一个index数组记录结果里面已经存放的元素索引,
用来判断当前的元素是否和上一个相同并且上一个是否使用过。
主要为了解决重复解的问题。
1 class Solution { 2 public: 3 vector<vector<int> >ans; 4 vector<vector<int> > combinationSum2(vector<int> &num, int target) { 5 if(num.size() == 0) 6 return ans; 7 sort(num.begin(),num.end()); 8 vector<int> res; 9 vector<int> index;10 calSum(num,target,0,res,index);11 return ans;12 }13 void calSum(vector<int> &num,int target,int s,vector<int> &res,vector<int> &index)14 {15 if(target < 0)16 return;17 if(target == 0)18 {19 ans.push_back(res);20 return;21 }22 int i;23 for(i = s ; i < num.size() ; ++i)24 {25 if(i >0 && index[index.size()-1] != i-1 && num[i] == num[i-1])26 continue;27 index.push_back(i);28 res.push_back(num[i]);29 calSum(num,target-num[i],i+1,res,index);30 res.pop_back();31 index.pop_back();32 }33 return;34 }35 };
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。