leetcode 39 组合求和 / combination sum
程序员文章站
2022-05-12 09:31:41
...
题目描述:
解题思路:递归搜索,找到 = target 的组合存下来即可,代码如下:
class Solution {
public:
vector<vector<int>> combinationSum(vector<int>& candidates, int target) {
vector<vector<int>> res;
vector<int> out;
combinationSum(candidates, target, 0, out, res);
return res;
}
private:
void combinationSum(vector<int>& candidates,int target,int begin,vector<int>& out,vector<vector<int>>& res){
if(target < 0) return ;
else if(target == 0){
res.push_back(out);
return ;
}
else{
for(int i = begin;i < candidates.size();i++){
out.push_back(candidates[i]);
combinationSum(candidates,target - candidates[i],i,out,res);
out.pop_back();
}
}
}
};
这里要注意以下,对out要传引用,不然就会变成这样:
个人猜测应该是每层都新开辟空间导致超时,大多数人应该都不会这样写,请忽略。。
还有看到差不多的做法有些写法先把candidates sort了一遍,这题sort不sort应该完全没有关系吧。
上一篇: Eclipse字符集设置方式
推荐阅读
-
【刷题1】LeetCode 39. 组合总和 java基础
-
LeetCode 307. Range Sum Query - Mutable (范围求和查询)
-
解题思路-LeetCode第39题:组合总和
-
回溯-LeetCode39. 组合总和
-
【LeetCode】39. 组合总和 & 40. 组合总数 II & 1~n 这n个数组合成 m
-
Sum (HDU - 4704)隔板定理 组合数求和 费马小定理(2^(N-1)%(1e9+7) N巨大)
-
Leetcode 39. Combination Sum 回溯法
-
Leetcode_Combination Sum 回溯法
-
【LeetCode算法练习(C++)】Combination Sum
-
(回溯法)LeetCode#39. Combination Sum