欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

leetcode 39 组合求和 / combination sum

程序员文章站 2022-05-12 09:31:41
...

题目描述:

leetcode 39 组合求和 / combination sum

解题思路:递归搜索,找到 = 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要传引用,不然就会变成这样:

leetcode 39 组合求和 / combination sum

个人猜测应该是每层都新开辟空间导致超时,大多数人应该都不会这样写,请忽略。。

还有看到差不多的做法有些写法先把candidates sort了一遍,这题sort不sort应该完全没有关系吧。