leetcode 39. Combination Sume (medium)

版权声明:by ruohua3kou https://blog.csdn.net/ruohua3kou/article/details/88960179

典型的回溯+递归问题,注意需要对目标数组排序

class Solution
{
  public:
	vector<vector<int>> combinationSum(vector<int> &candidates, int target)
	{
		vector<vector<int>> res;
		sort(candidates.begin(), candidates.end());
		vector<int> temp;
		helper(res, temp, candidates, target, 0);
		return res;
	}
	void helper(vector<vector<int>> &res, vector<int> temp, vector<int> &candidates, int target, int start)
	{
		if (target == 0)
		{
			res.push_back(temp);
			return;
		}
		for (int i = start; i < candidates.size() && target >= candidates[i]; i++)
		{
			temp.push_back(candidates[i]);
			helper(res, temp, candidates, target - candidates[i], i);
			temp.pop_back();
		}
	}
};

猜你喜欢

转载自blog.csdn.net/ruohua3kou/article/details/88960179