【LeetCode算法练习(C++)】Combination Sum II
来源:互联网 发布:联合国五大流氓 知乎 编辑:程序博客网 时间:2024/06/15 06:33
题目:
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 II
解法:与Combination Sum类似,不同的是递归时需要排除已经选择的数字,答案用set存以过滤重复的数组。时间O(n^2)
class Solution {public: vector<vector<int> > combinationSum2(vector<int> &candidates, int target) { set<vector<int> > ans; vector<int> out; sort(candidates.begin(), candidates.end()); combinationSumDFS(candidates, target, 0, out, ans); return vector<vector<int> >(ans.begin(), ans.end()); } void combinationSumDFS(vector<int> &candidates, int target, int start, vector<int> &out, set<vector<int> > &res) { if (target < 0) return; else if (target == 0) res.insert(out); else for (int i = start; i < candidates.size(); ++i) { int tmp = candidates[i]; out.push_back(tmp); candidates.erase(candidates.begin() + i); combinationSumDFS(candidates, target - tmp, i, out, res); candidates.insert(candidates.begin() + i, out[out.size() - 1]); out.pop_back(); } }};
Runtime: 93 ms
阅读全文
0 0
- 【LeetCode算法练习(C++)】Combination Sum II
- 【LeetCode算法练习(C++)】Combination Sum
- 【C++】【LeetCode】39. Combination Sum&40. Combination Sum II
- LeetCode OJ算法题(三十九):Combination Sum II
- leetcode 40. Combination Sum II-回溯算法
- [C++]LeetCode: 34 Combination Sum II
- [leetcode] 040. Combination Sum II (Medium) (C++)
- 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
- EasyUI 下拉框自适应高度
- pthread_mutex_lock(&lock); 没有执行init 动作
- Appium 测试 Android 切换Wenview 报错问题
- MySql 编码方式修改
- spring boot 入门第一章
- 【LeetCode算法练习(C++)】Combination Sum II
- Java调用Python写的tensorflow函数
- General Algorithm
- 机器学习的基础概念
- 算法之堆排序(最大堆c++实现)
- jmeter1- 认识jmeter
- 重写和重载
- java 线程池
- ThinkPHP5 单独运行某个文件