LeetCode *** 40. Combination Sum II
2016-04-20 21:11
162 查看
题目:
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.
Elements in a combination (a1,
a2, … , ak) must be in non-descending order. (ie,
a1 ≤ a2 ≤ … ≤
ak).
The solution set must not contain duplicate combinations.
For example, given candidate set
A solution set is:
分析:
每次写完代码都不敢看结果。。
代码:
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.
Elements in a combination (a1,
a2, … , ak) must be in non-descending order. (ie,
a1 ≤ a2 ≤ … ≤
ak).
The solution set must not contain duplicate combinations.
For example, given candidate set
10,1,2,7,6,1,5and target
8,
A solution set is:
[1, 7]
[1, 2, 5]
[2, 6]
[1, 1, 6]
分析:
每次写完代码都不敢看结果。。
代码:
class Solution { public: int tg; vector<vector<int>> res; vector<vector<int>> combinationSum2(vector<int>& candidates, int target) { sort(candidates.begin(),candidates.end()); tg=target; vector<int>tmp; dfs(candidates,tmp,0,0); return res; } void dfs(vector<int>& nums,vector<int> tmp,int start,int sum){ int s,i=start; while(i<nums.size()){ while(i!=start&&nums[i]==nums[i-1])i++; s=sum+nums[i]; if(s==tg){ tmp.push_back(nums[i]); res.push_back(tmp); return; } if(s<tg){ tmp.push_back(nums[i]); dfs(nums,tmp,i+1,s); tmp.pop_back(); } i++; } } };
相关文章推荐
- 20160420javaweb之文件上传和下载
- Windows上安装Xampp后通过命令行进入MariaDB
- Gradle体验/第一篇:下装、安装、配置、体验
- 超级强大的vim配置(vimplus)
- Android M App Permissions
- Problem M
- Problem M
- hdu4749 Parade Show(kmp)
- 入坑宣言
- asp.net随机数
- 作业5
- (转载)Java之外观模式(Facade Pattern)
- SQL中CONVERT()转化函数的用法 字符串转日期
- 阿里巴巴2017实习生招聘笔试题(算法工程师)
- 专题二1014
- 你最喜欢做什么--兴趣问题清单
- CSS3---用户界面
- 函数指针
- 文件传输
- [leetcode] 120. Triangle