Combination Sum
来源:互联网 发布:文明的冲突 知乎 编辑:程序博客网 时间:2024/04/30 18:06
Given a set of candidate numbers (C) and a target number (T), find all unique combinations in C where the candidate numbers sums to T.
The same repeated number may be chosen from C unlimited number of times.
Note:
- All numbers (including target) will be positive integers.
- Elements in a combination (a1, a2, … , 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
,
A solution set is: [7]
[2, 2, 3]
Analysis: This problem is the same as Coin Change Problem (See Cracking chapter 9). In order to meet the requirement of this problem, we need to sort the candidates array in ascending order first and then solve it recursively.
f(target) = f(target - 0*first_element) + f(target - 1*first_element) + f(target - 2*first_element) + ... f(target - n*first_element)
public class Solution { public void combinationSum(int[] candidates, int index, int target, ArrayList<ArrayList<Integer>> res, ArrayList<Integer> tem) {if(target == 0) {ArrayList<Integer> clone = new ArrayList<Integer>(tem);res.add(clone);return;}int i = 0;while(index<candidates.length && target >= i*candidates[index]) {for(int j=0; j<i; j++) {tem.add(candidates[index]);}combinationSum(candidates, index+1, target-i*candidates[index], res, tem);for(int k=0; k<i; k++) {tem.remove(tem.size()-1);}i++;}return;}public ArrayList<ArrayList<Integer>> combinationSum(int[] candidates, int target) {ArrayList<ArrayList<Integer>> res = new ArrayList<ArrayList<Integer>>();ArrayList<Integer> tem = new ArrayList<Integer>();Arrays.sort(candidates);combinationSum(candidates, 0, target, res, tem);return res; }}
0 0
- Combination Sum
- Combination Sum
- Combination Sum
- Combination Sum
- Combination Sum
- Combination Sum
- Combination Sum
- Combination Sum
- Combination Sum
- Combination Sum
- Combination Sum
- Combination Sum
- Combination Sum
- Combination Sum
- Combination Sum
- Combination Sum
- Combination Sum
- Combination Sum
- 3Sum
- 3Sum Closest
- powerdns 安装部署备忘
- 输出数组
- powerDNS 数据库表记录简要说明
- Combination Sum
- Eclipse下运行C/C++程序编译时包含*.h(headers)
- Combination Sum II
- C语言中结构体(struct)和联合(union)的使用
- POJ 1226 出现或者翻转后出现在每一个串中的子串
- CF - 387 - B. George and Round(指针)
- 配置SSH无密码登陆
- Binary Tree Inorder Traversal
- How do I instantiate a Queue object in java?