40. Combination Sum II
来源:互联网 发布:python相关性分析p值 编辑:程序博客网 时间:2024/06/09 13:50
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]
]
这道题与39题类似,不过这里不允许使用相同元素两次。
#include <vector>using namespace std;class CombinationSumII{public: vector<vector<int>> combinationSum2(vector<int>& candidates, int target); void combinationSum(vector<int> &candidates, int target, vector<vector<int> > &res, vector<int> &combination, int begin);};
#include <algorithm>#include "CombinationSumII.h"vector<vector<int>> CombinationSumII::combinationSum2(vector<int>& candidates, int target){ sort(candidates.begin(), candidates.end()); vector<std::vector<int> > res; vector<int> combination; //开始迭代 combinationSum(candidates, target, res, combination, 0); return res;}void CombinationSumII::combinationSum(std::vector<int> &candidates, int target, std::vector<std::vector<int> > &res, std::vector<int> &combination, int begin) { if (!target) { res.push_back(combination); return; } for (int i = begin; i != candidates.size() && target >= candidates[i]; ++i) { //这句是与上一道题的区别点 if (i > begin && candidates[i] == candidates[i - 1]) continue; combination.push_back(candidates[i]); //每次查找的目标元素不同 combinationSum(candidates, target - candidates[i], res, combination, i); //这步保证遍历完所有子集 combination.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
- ROS+SLAM笔记(5)创建包
- 2017-11-9
- 通过FTP软件树莓派(Raspberry Pi 3)可以和电脑上传或者下载文件
- 腾讯视频格式转换(重点是CMD的命令)
- 贪吃蛇(C语言)
- 40. Combination Sum II
- javascript实现导航栏
- c++11多线程编程(八):std::future , std::promise和线程的返回值
- 告别低水平勤奋,深度思考
- A Painless Q-learning Tutorial (一个 Q-learning 算法的简明教程)
- JDK源码走读之ReentrantLock
- 2018届各大互联网公司校招薪资曝光汇总
- CSS3中translate、transform、translation和animation的区别
- 蜜蜂寻路