小白笔记----------------------------------------leetcode(40. Combination Sum II )
2017-11-22 17:19
381 查看
Given a collection of candidate numbers (C) and a target number (T), find all unique combinations in
C where the candidate numbers sums to T.
Each number in C may only be used once in the combination.
Note:
All numbers (including target) will be positive integers.
The solution set must not contain duplicate combinations.
For example, given candidate set
A solution set is:
C where the candidate numbers sums to T.
Each number in C may only be used once in the combination.
Note:
All numbers (including target) will be positive integers.
The solution set must not contain duplicate combinations.
For example, given candidate set
[10, 1, 2, 7, 6, 1, 5]and target
8,
A solution set is:
[ [1, 7], [1, 2, 5], [2, 6], [1, 1, 6] ] 这一题与之前的问题1来说, 只是不能重复使用数,所以在递归的时候i+1,而且因为有相同的数,为了规避这种情况引发的多个相同的解,要再遇到同样的数的时候跳过。
class Solution { public List<List<Integer>> combinationSum2(int[] candidates, int target) { Arrays.sort(candidates); List<List<Integer>> result = new ArrayList(); backtrack(result,new ArrayList<Integer>(),candidates,target,0); return result; } public void backtrack(List<List<Integer>> result,List<Integer> list,int[] candidates,int target,int start){ if(target == 0){ result.add(new ArrayList(list)); } if(target > 0){ for(int i = start;i < candidates.length && target >= candidates[i];i++){ if (i > start && candidates[i] == candidates[i - 1]){//如果是相同的数就可能引发同样的结果,所以将这种情况跳过 continue; } list.add(candidates[i]); backtrack(result,list,candidates,target- candidates[i],i+1); list.remove(list.size()-1); } } } }
相关文章推荐
- 小白笔记----------------leetcode 58. Length of Last Word
- 小白笔记------------------------leetcode(7. Reverse Integer)
- 小白笔记--------------------leetcode(283. Move Zeroes)
- 小白笔记------------leetcode(204. Count Primeszhe)
- 小白笔记--------------------------leetcode(20. Valid Parentheses )
- 小白笔记-------------------------------leetcode(169. Majority Element)
- 小白笔记----------------------------------------leetcode 3. Longest Substring Without Repeating Characte
- 小白笔记---------------------------leetcode(203. Remove Linked List Elements )
- 小白笔记--------------------leetcode27. Remove Element
- 小白笔记----------------leetcode(404. Sum of Left Leaves )
- 小白笔记---------------------------------leetcode(70. Climbing Stairs )
- 小白笔记---------------------------------leetcode(48. Rotate Image )
- 小白笔记----------------------------------------leetcode(39. Combination Sum )
- 小白笔记-------------------------------------leetcode(136. Single Number )
- 小白笔记------------------------------------leetcode(389. Find the Difference )
- 小白笔记-----------------------leetcode(28. Implement strStr())
- 小白笔记-------------------------leetcode(258. Add Digits )
- 小白笔记-----------------------leetcode(8. String to Integer (atoi) )
- 小白笔记--------------leetcode(383. Ransom Note)
- 小白笔记-------------------leetcode(263. Ugly Number )