leetcode 39 组合求和 / combination sum

题目描述:

leetcode 39 组合求和 / combination sum_第1张图片

解题思路:递归搜索,找到 = target 的组合存下来即可,代码如下:

class Solution {
	public:
		vector> combinationSum(vector& candidates, int target) {
			vector> res;
			vector out;
			combinationSum(candidates, target, 0, out, res);
			return res;
		}
	private:
	void combinationSum(vector& candidates,int target,int begin,vector& out,vector>& 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_第2张图片

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

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

你可能感兴趣的:(刷题)