[Leetcode] Combination Sum II
来源:互联网 发布:电棍在淘宝怎么搜索 编辑:程序博客网 时间:2024/06/18 07:49
描述
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]]
分析
这道题是 Combination Sum 的改进版,与原题不同的地方在于这道题要求数组中的每一个元素只能使用一次。
因此还是使用原来题目的思路,还是使用递归的方法来解决题目,原题的求解看 这里 。
代码1
class Solution {public: vector<vector<int>> combinationSum2(vector<int>& candidates, int target) { sort(candidates.begin(), candidates.end()); vector<vector<int>> res; vector<int> out; combine(target, candidates, 0, out, res); return res; } void combine(int target, vector<int>& candidates, int i, vector<int>& out, vector<vector<int>>& res) { if (target < 0) return; if (target == 0) {res.push_back(out); return;} for (int j = i; j < candidates.size(); j++) { if (j > i && candidates[j] == candidates[j - 1]) continue; out.push_back(candidates[j]); combine(target - candidates[j], candidates, j + 1, out, res); out.pop_back(); } }};
代码2
class Solution {public: vector<vector<int>> combinationSum2(vector<int>& candidates, int target) { sort(candidates.begin(), candidates.end()); vector<vector<int>> res; vector<int> out; combine(target, candidates, 0, out, res); return res; } void combine(int target, vector<int>& candidates, int i, vector<int>& out, vector<vector<int>>& res) { if (target < 0) return; if (target == 0) {res.push_back(out); return;} for (int j = i; j < candidates.size(); j++) { if (j > i && candidates[j] == candidates[j - 1]) continue; out.push_back(candidates[j]); combine(target - candidates[j], candidates, j + 1, out, res); out.pop_back(); } }};
相关问题
Combination Sum
0 0
- LeetCode: Combination Sum II
- LeetCode: Combination Sum II
- [LeetCode]Combination Sum II
- LeetCode Combination Sum II
- [Leetcode] Combination Sum II
- [LeetCode] Combination Sum II
- LeetCode Combination Sum II
- [Leetcode] Combination Sum II
- LeetCode: Combination Sum II
- leetcode Combination Sum II
- [LeetCode]Combination Sum II
- [leetcode] Combination Sum II
- LeetCode-Combination Sum II
- LeetCode - Combination Sum II
- LeetCode:Combination Sum II
- 【Leetcode】Combination Sum II
- Combination Sum II 【leetcode】
- [LeetCode] Combination Sum II
- Unity3D教程之Light光源
- 学生管理系统
- Mysql数学函数不求人
- Nodejs Native AddOn的编写
- 日期常量类
- [Leetcode] Combination Sum II
- 【java】王道计算机考研机试指南例题java版
- j2ee的web工程,jsp、html、js文件有叉号,怎么去掉自动验证,我不想看到叉号
- Android实现RecyclerView侧滑删除和长按拖拽-ItemTouchHelper
- mac清理软件 ,装双系统
- linux环境下 利用QT 开发音量键
- This Toast was not created with Toast.makeText()的解决办法
- MySQL中修改密码及访问限制设置详解
- 为什么thinkphp插入不进数据库,更改了数据库的配置之后