40. Combination Sum II
来源:互联网 发布:知商金融 跑路 编辑:程序博客网 时间:2024/06/16 13:47
problem:
Given a collection of candidate numbers (C) and a target number (T), find all unique combinations in C where the candidate numbers sums to T.
Each number in C may only be used once in the combination.
Note:
- All numbers (including target) will be positive integers.
- The solution set must not contain duplicate combinations.
For example, given candidate set [10, 1, 2, 7, 6, 1, 5]
and target 8
,
A solution set is:
[ [1, 7], [1, 2, 5], [2, 6], [1, 1, 6]]
和上一题类似,也是使用深度搜索优先算法。注意这里递归时,要使用下一位即可。
class Solution {public: vector<vector<int>> result; vector<int> temp = {}; void dfs(vector<int> candidates, int target, int sum, int j) { if(sum == target) { result.push_back(temp); //return; } else if(sum > target) { //return; } else { for(int i=j; i<candidates.size(); i++) { temp.push_back(candidates[i]); dfs(candidates, target, sum+candidates[i], i+1); temp.pop_back(); } } } vector<vector<int>> combinationSum2(vector<int>& candidates, int target) { vector<vector<int>> temp1; if(candidates.empty()) return result; sort(candidates.begin(), candidates.end()); dfs(candidates, target, 0, 0); if(result.size() <= 1) return result; sort(result.begin(), result.end()); temp1.push_back(result[0]); for(int i=1; i<result.size(); i++) { if(result[i-1] != result[i]) { temp1.push_back(result[i]); } } return temp1; }};
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
- malloc实现原理
- 总结63
- java 重写 hashCode、equals
- malloc的实现原理(2)
- PHP utf-8编码问题,utf8编码,数据库乱码,页面显示输出乱码
- 40. Combination Sum II
- Ubuntu下安装svn service以及常用的svn命令
- Android 歌词Lrc显示 自定义View
- 记录学习Android开发路上一些值得重复看的文章
- gcc编译器的用法
- C/C++左值性精髓 (一)
- C语言malloc和free实现原理
- 深入理解Struts,实现一个简单的MVC
- 学习笔记之--java容器