LeetCode 40. Combination Sum II
来源:互联网 发布:博采网络推广怎么做 编辑:程序博客网 时间:2024/06/03 21:53
题目描述
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]
]解题思路
这个题目就是背包问题简化版吧,二叉树,两种情况,放还是不放。
一开始就是这样些的,后来发现一个小问题就是结果可能没有去重,如果背包有两个相同元素。
后来我就很暴力的用set。。。。
最后在转成vector返回。。。- 代码实现
#include<set>using namespace std;class Solution {public: set<vector<int> > res; int path[10000]; void getRes(vector<int>& nums,int target,int index,int sum,int pathlen){ if(sum==target){ vector<int> t; for(int i=0;i<pathlen;++i) t.push_back(path[i]); res.insert(t); } else if(sum>target) return ; else { if(index!=nums.size()){ //放进去 path[pathlen]=nums[index]; getRes(nums,target,index+1,sum+nums[index],pathlen+1); //不放进去 //if(nums[index]!=nums[index+1]) getRes(nums,target,index+1,sum,pathlen); } } } vector<vector<int>> combinationSum2(vector<int>& candidates, int target) { sort(candidates.begin(),candidates.end()); getRes(candidates,target,0,0,0); vector<vector<int> > vres; set<vector<int>>::iterator it=res.begin(); for(;it!=res.end();++it) vres.push_back(*it); return vres; }};
0 0
- [LeetCode]40.Combination Sum II
- LeetCode --- 40. Combination Sum II
- LeetCode 40.Combination Sum II
- [Leetcode] 40. Combination Sum II
- LeetCode 40. Combination Sum II
- [leetcode] 40. Combination Sum II
- 40. Combination Sum II LeetCode
- leetcode 40. Combination Sum II
- Leetcode 40. Combination Sum II
- LeetCode 40. Combination Sum II
- leetcode 40. Combination Sum II
- LeetCode 40. Combination Sum II
- LeetCode 40. Combination Sum II
- LeetCode *** 40. Combination Sum II
- 【LeetCode】40. Combination Sum II
- leetcode 40. Combination Sum II
- LeetCode - 40. Combination Sum II
- [LeetCode] 40. Combination Sum II
- 平衡二叉树
- cocos2dx学习之路----第十四篇(内存管理机制)
- php魔术方法__get和__set详解
- HDOJ 2057 A + B Again(水题,基础)
- js 中this陷阱
- LeetCode 40. Combination Sum II
- Android ADB server didn't ACK * failed to start daemon * 简单有效的解决方案
- softmax 函数
- 多文件上传
- Windows不能在本地计算机启动IIS Admin Service
- 设计模式之模板方法模式
- MySQL数据库学习一
- java使用sax解析xml
- 0MQ绑定Delphi版-说明