Leetcode|Combination Sum III[回溯]
来源:互联网 发布:电脑接口转换器 知乎 编辑:程序博客网 时间:2024/04/30 13:03
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
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); }};
0 0
- [leetcode][回溯] Combination Sum III
- Leetcode|Combination Sum III[回溯]
- leetcode---Combination Sum III---回溯
- leetcode Combination Sum III-回溯|递归
- 216.leetcode Combination Sum III(medium)[回溯]
- leetcode -- Combination Sum III -- 重点,dfs回溯模板
- LeetCode Combination Sum III
- [LeetCode] Combination Sum III
- 【leetcode】 Combination Sum III
- [leetcode] Combination Sum III
- [leetCode] Combination Sum III
- leetcode Combination Sum III
- leetcode--Combination Sum III
- LeetCode Combination Sum III
- Leetcode: Combination Sum III
- leetcode: Combination Sum III
- 【leetcode】Combination Sum III
- Combination Sum III -- leetcode
- 十佳最受欢迎的编程语言,你擅长几个?
- 设计模式三——单一职责原则
- Service和Thread的关系
- Spring AOP之AspectJ
- C++字符串总结
- Leetcode|Combination Sum III[回溯]
- awk
- C#-基础加强(2)
- HDOJ 1283 最简单的计算机
- 爬虫Spider
- Android之路
- 写一个函数,计算4 000 000 000 以内的最大的那个f(n)=n的值
- Java 中的成员内部类
- lock synchronized 区别