40. Combination Sum II
来源:互联网 发布:java教程电子书下载 编辑:程序博客网 时间:2024/06/04 07:23
1、题目描述
给一个数组和一个target,找出所有不同的数组集合,使得集合中的数字之和为target。每个数字只能用一次。
2、思路
与Combination Sum I差不多回溯。
不同点:
1、数组元素不可以重复使用,那么下一次调用同一dfs函数的时候要注意起始位置+1.
2、输入的数组是有重复元素的,要使得答案都是unique的,那么每次dfs都要确保起始位置与前一位置的数字不同,
所以先将数组排序,起始位置的数字大于前面位置的数字即可。
3、代码
vector<vector<int>> combinationSum2(vector<int>& candidates, int target) { sort(candidates.begin(),candidates.end()); vector<vector<int>> ans; vector<int>v; dfs(ans,candidates,v,target,0); return ans; } void dfs(vector<vector<int>>& ans,vector<int>& candidates,vector<int>& v, int target,int start){ if(target==0){ ans.push_back(v); return; } else if(target<0) return; for(int i=start;i<candidates.size();i++){ if(i==start||candidates[i]>candidates[i-1]){ v.push_back(candidates[i]); dfs(ans,candidates,v,target-candidates[i],i+1); v.pop_back(); } } }
阅读全文
0 0
- 40. Combination Sum II
- 40. Combination Sum II
- 40. Combination Sum II
- 40. Combination Sum II
- 40. Combination Sum II
- 40. Combination Sum II
- 40. Combination Sum II
- 40. Combination Sum II
- 40. Combination Sum II
- 40. Combination Sum II
- 40. Combination Sum II
- 40. Combination Sum II
- 40. Combination Sum II
- 40. Combination Sum II
- 40. Combination Sum II
- 40. Combination Sum II
- 40. Combination Sum II
- 40. Combination Sum II
- struct,class的sizeof大小问题
- DebuggerStepThrough 属性
- 多种CSS3动画效果星级评分特效
- Android面试篇之IPC机制[进程之间的通讯]
- 序列化二叉树的一种方法是使用预序遍历。当我们遇到一个非空节点时,我们记录节点的值 如果它是一个空节点,我们使用一个哨兵值如#记录。
- 40. Combination Sum II
- 遍历 HashMap
- 4.3(2)
- Mybatis入门以及配置文件解析
- QT 创建UDP Socket通信
- Java 向post接口传json参数,得到结果
- 20.springboot的多模块部署
- 【AI专栏】识别类评测之数据篇
- 获取状态栏和虚拟键高度