LeetCode 39. Combination Sum 题解
来源:互联网 发布:阿里云 腾讯云 对比 编辑:程序博客网 时间:2024/04/30 13:06
39. Combination Sum
- Total Accepted: 124666
- Total Submissions: 357084
- Difficulty: Medium
- Contributors: Admin
Given a set of candidate numbers (C) and a target number (T), find all unique combinations in C where the candidate numbers sums to T.
The same repeated number may be chosen from C unlimited number of times.
Note:
- All numbers (including target) will be positive integers.
- The solution set must not contain duplicate combinations.
For example, given candidate set [2, 3, 6, 7]
and target 7
,
A solution set is:
[ [7], [2, 2, 3]]
解题思路:
本题可采用深度优先搜索的方法,遍历每一种可行解,具体参见代码注释。
代码展示:
class Solution {public: vector<vector<int>> combinationSum(vector<int>& candidates, int target) { int csize= candidates.size(); sort(candidates.begin(),candidates.end()); sol=candidates; vector<int> tmp; dfs(tmp,target,0); return res; }private: vector<vector<int> > res; vector<int> sol; int sum(vector<int> tmp) { int n = tmp.size(); int tmp_sum=0; for(int i=0;i<n;i++) { tmp_sum+=tmp[i]; } return tmp_sum; } void dfs(vector<int> &tmp,int target, int l) { if(l==sol.size()) return;//l==size时,所有情况都遍历过 int tmp_tot = sum(tmp); //计算tmp的和,如果大于target则剪枝,等于target则为一合法解,小于target继续添加数 if(tmp_tot>target) return ; else if(tmp_tot==target) { res.push_back(tmp); return ; } else { for(int i=l;i<sol.size();i++) { tmp.push_back(sol[i]);//添加数sol[i] dfs(tmp,target,i); tmp.pop_back();//回溯,删除数sol[i] } } }};
0 0
- LeetCode 39. Combination Sum 题解
- leetcode题解-39. Combination Sum
- Leetcode题解-39. Combination Sum
- LeetCode 题解(174): Combination Sum
- leetcode题解-40. Combination Sum II && 216. Combination Sum III
- [LeetCode]39.Combination Sum
- LeetCode --- 39. Combination Sum
- LeetCode 39.Combination Sum
- [Leetcode] 39. Combination Sum
- Leetcode-39.Combination Sum
- LeetCode 39. Combination Sum
- [LeetCode]39. Combination Sum
- 39. Combination Sum LeetCode
- [leetcode] 39. Combination Sum
- leetcode 39. Combination Sum
- 【leetcode】 39. Combination Sum
- LeetCode 39. Combination Sum
- leetcode 39. Combination Sum
- test2
- vector的使用,结构体排序
- 传输层TCP协议三次握手详解
- 企业为什么要使用商业智能?
- Oracle 数据库监控
- LeetCode 39. Combination Sum 题解
- python object oriented programming terms
- Fiddler web调试工具(pc端和手机端)
- window下装django遇到的主要问题
- iOS gif图相关
- JQuery之Ajax操作
- 【Linux】【编译】libmpc.so.3: cannot open shared object file: No such file or directory
- Android Apk自动更新service(直接拿来用)转载
- login之后环境变量“COLUMNS”的值为何为空(centos6.5)