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]
Solution:
public List<List<Integer>> combinationSum(int[] candidates, int target) { List<List<Integer>> result = new ArrayList<>(); Arrays.sort(candidates); combine(result, new ArrayList<Integer>(), candidates, target, 0); return result; } private void combine(List<List<Integer>> result, List<Integer> list, int[] num, int target, int pos) { if(target < 0) return; if(target == 0) { result.add(new ArrayList<Integer>(list)); return; } for(int i=pos; i<num.length; i++) { list.add(num[i]); combine(result, list, num, target-num[i], i); //注意,从i开始,不是i+1,因为可以重复使用 list.remove(list.size()-1); } }
相关推荐
c语言入门 C语言_leetcode题解之39-combination-sum.c
js js_leetcode题解之39-combination-sum.js
java java_leetcode题解之Combination Sum.java
java java_leetcode题解之Combination Sum IV.java
java java_leetcode题解之Combination Sum III.java
java java_leetcode题解之Combination Sum II.java
c语言入门 C语言_leetcode题解之40-combination-sum-ii.c
js js_leetcode题解之40-combination-sum-II.js
java入门 java_leetcode题解之039_Combination_Sum
python python_leetcode题解之216_Combination_Sum_III.py
combination sum: 39, 40, 216 - palindrome partitioning - regex - sudoku solver: 37 排序 - merge sort - quick sort - insertion sort - selection sort - counting sort 位操作 - find the only element which...
9. **模拟和回溯**:对于某些组合优化问题,可以使用回溯法来枚举所有可能的解决方案,例如"组合总和"(Combination Sum)。 10. **排序与堆**:数组的排序问题可以通过快速排序、归并排序等经典算法解决,而"最大...
第 296 章PY 和 GO 中的 Leetcode 我在 Python Golang ...Leetcode ...40:combination-sum-ii:传递最后选择的索引 41:先缺失正,交换 42:只是提醒:块 - 垃圾箱 43:多字符串,i+j,i+j+1 44:通配符
leetcode怎么销号 LeetCode-Solutions :green_heart:My own LeetCode solutions No. Problem LeetCode 力扣 Python Go Solution Difficulty Tag 0017 Letter Combinations of a Phone Number Medium 回溯、暴力 0034...
- Combination Sum: 找出所有相加之和为特定值的组合。 - First Missing Positive: 找出数组中缺失的最小正数。 - Trapping Rain Water: 给定一个数组,其中每个元素代表一个宽度为1的柱子高度,计算能接多少雨水。 ...
Combination Sum Description 给一组candidates (list of int)和target (int),求使用candidates内数字组合,让总和等于target的所有组合。 candidates内的数字皆不同 candidates内的数字可以重复使用无限次 ...
1. 回溯法:中等难度题目中,回溯法是一种常见的解决方案,如"Combination Sum"(组合总和)和"N-Queens"(皇后问题),通过回溯可以找到所有可能的解。 2. 动态规划:"House Robber"(打家劫舍)系列问题,展示了...
例如“组合总和”(Combination Sum)题目,通过回溯法找出所有可能的组合。 8. **动态规划**:解决最优化问题的利器,通过构建状态转移方程,避免重复计算。如“最长连续序列”(Longest Consecutive Sequence)...