Leetcode|Combination Sum III[回溯]
2015-08-02 20:34
295 查看
Find all possible combinations of k numbers that add up to a number n, given that only numbers from 1 to 9 can be used and each combination should be a unique set of numbers.
Ensure that numbers within the set are sorted in ascending order.
Example 1:
Input: k = 3, n = 7
Output:
[[1,2,4]]
Example 2:
Input: k = 3, n = 9
Output:
[[1,2,6], [1,3,5], [2,3,4]]
解法1: 4ms
解法2:0ms 加个for循环协助递归。
Ensure that numbers within the set are sorted in ascending order.
Example 1:
Input: k = 3, n = 7
Output:
[[1,2,4]]
Example 2:
Input: k = 3, n = 9
Output:
[[1,2,6], [1,3,5], [2,3,4]]
解法1: 4ms
class Solution { public: vector<vector<int>> combinationSum3(int k, int n) { vector<int> candidates={1,2,3,4,5,6,7,8,9}; vector<int> temp; vector<vector<int>> res; combinationSum(candidates,0,n,temp,res,k); return res; } void combinationSum(vector<int>& candidates,int index,int target,vector<int> temp,vector<vector<int>> &res, int k){ if(index==candidates.size()||candidates[index]>target||temp.size()>=k) return;//终止条件 temp.push_back(candidates[index]); if(candidates[index]==target&&temp.size()==k){ res.push_back(temp);//找到一组满足条件的 return; } combinationSum(candidates,index+1,target-candidates[index],temp,res,k); temp.pop_back(); combinationSum(candidates,index+1,target,temp,res,k); } };
解法2:0ms 加个for循环协助递归。
class Solution { public: vector<vector<int>> combinationSum3(int k, int n) { vector<int> candidates={1,2,3,4,5,6,7,8,9}; vector<int> temp; vector<vector<int>> res; combinationSum(candidates,0,n,temp,res,k); return res; } void combinationSum(vector<int>& candidates,int index,int target,vector<int> temp,vector<vector<int>> &res, int k){ if(index==candidates.size()||candidates[index]>target||temp.size()>=k) return;//终止条件 for(int i=index;i<candidates.size();i++){ temp.push_back(candidates[i]); if(candidates[i]==target&&temp.size()==k){ res.push_back(temp);//找到一组满足条件的 return; } combinationSum(candidates,i+1,target-candidates[i],temp,res,k); temp.pop_back(); } //combinationSum(candidates,index+1,target,temp,res,k); } };
相关文章推荐
- Hdu 1 402 FFT 大整数相乘 && Hoj10005
- 设计模式三——单一职责原则
- Jenkins on PaaS
- Newton-Raphson方法
- Service和Thread的关系
- win8.1通过update升级win10的一些问题和思考
- Spring AOP之AspectJ
- Android开源框架(一):AndroidAnnotations
- ucp2p ,一个简单的P2P库
- C++常用容器总结
- C++字符串总结
- 十佳最受欢迎的编程语言,你擅长几个?
- 在Github上搭建自己的博客网站
- 烧钱时代,产品经理该做什么?
- HDOJ 2570 迷瘴(贪心)
- 69. Sqrt(x)
- MySql学习:索引
- [leetcode] permutations的讨论
- C语言 -- 定时关机程序
- 【Qt OpenGL教程】07:光照和键盘控制