39 Combination Sum

原创 2016年05月31日 22:28:37

DFS处理,有两个比较坑的要求:

  • Elements in a combination (a1a2, … , ak) must be in non-descending order. (ie, a1 ≤ a2 ≤ … ≤ ak).
  • The solution set must not contain duplicate combinations.
每个备选数字都可以用无限次。

For example, given candidate set 2,3,6,7 and target 7

若给定[7,6,3,2] ,target=7 ,顺序搜索可能出现[3,2,2],不满足要求1,所以可以先给数组升序排列。

onstack法搜索所有的可能会导致同时出现[2,2,3]、[3,2,2]这样的解,没有顺序?就加顺序

限制下次递归调用使用的index必须比当前的大,即是规定顺序。


public class Solution {
    List<List<Integer>> retlist = new ArrayList<>(512);

	public List<List<Integer>> combinationSum(int[] candidates, int target)
	{

		Arrays.sort(candidates);

		dfs(candidates, target, 0, -1, new ArrayList<Integer>());

		return retlist;
	}

	public void dfs(int[] arr, int t, int sum, int lastindex,ArrayList<Integer> arraylist)
	{
		if (sum > t)
			return;
		if (sum == t)
		{
			retlist.add(new ArrayList<>(arraylist));
			return;
		}

		for (int i = 0; i < arr.length; i++)
		{
			if (i >= lastindex)
			{
				arraylist.add(arr[i]);
				dfs(arr, t, sum + arr[i], i, arraylist);
				arraylist.remove(arraylist.size()-1);
			}

		}
	}
}


版权声明:本文为博主原创文章,未经博主允许【可以】转载

相关文章推荐

LeetCode 39. Combination Sum II

和LeetCode 38. Combination Sum

39-Combination Sum

题目:Given a set of candidate numbers (C) (without duplicates) and a target number (T), find all uniqu...

leetcode【39+40+216+377 Combination Sum 相关】【python】

39Combination Sum是说让我们在给定数组C中找到所有的组合,使得组合中数字的和是target值。并且组合里的数字可以重复,也就是不限制C中每一个数字的使用。 这明显是回溯啦,大家记得让...

LeetCode39 Combination Sum

原题:英:Given a set of candidate numbers (C) (without duplicates) and a target number (T), find all uni...

【一天一道LeetCode】#39. Combination Sum

一天一道LeetCode系列(一)题目 Given a set of candidate numbers (C) and a target number (T), find all unique ...

39. Combination Sum [leetcode][javascript解法]

Combination Sum Add to List QuestionEditorial Solution My Submissions Total Accepted: 128797 To...
  • dayuqi
  • dayuqi
  • 2016年12月13日 23:00
  • 140

LeetCode OJ-39-Combination Sum

题目:Given a set of candidate numbers (C) and a target number (T), find all unique combinations in C w...

[leetcode] 39& 40 Combination Sum I& II

if (i != index && num[i] == num[i - 1]) continue; Given a set of candidate numbers (C) and a target...

leetcode - 39. Combination Sum

39. Combination Sum Given a set ofcandidate numbers (C) (without duplicates) and atarget number (T)...
  • laeen
  • laeen
  • 2017年02月27日 11:10
  • 190

leetcode 39. Combination Sum

Given a set of candidate numbers (C) and a target number (T), find all unique combinations in C wher...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:39 Combination Sum
举报原因:
原因补充:

(最多只允许输入30个字)