Leetcode 39 Combination Sum
阿新 • • 發佈:2018-12-23
Given a set of candidate numbers (candidates
) (without duplicates) and a target number (target
), find all unique combinations in candidates
where the candidate numbers sums to target
.
The same repeated number may be chosen from candidates
unlimited number of times.
Note:
- All numbers (including
target
) will be positive integers. - The solution set must not contain duplicate combinations.
Example 1:
Input: candidates = [2,3,6,7], target = 7, A solution set is: [ [7], [2,2,3] ]
Example 2:
Input: candidates = [2,3,5], target = 8, A solution set is:[ [2,2,2,2], [2,3,3], [3,5] ]
這個題就是典型的回溯dfs方法
1)
class Solution { public List<List<Integer>> combinationSum(int[] nums, int target) { List<List<Integer>> result = new ArrayList<>(); if (nums.length == 0) { return result; } List<Integer> path = new ArrayList<>(); dfs(nums, target, result, path, 0); return result; } private void dfs(int[] nums, int target, List<List<Integer>> result, List<Integer> path, int index) { if (target < 0) { return; } if (target == 0) { result.add(new ArrayList<>(path)); } for (int i = index; i < nums.length; i++) { path.add(nums[i]); dfs(nums, target - nums[i], result, path, i); path.remove(path.size() - 1); } } }