40. Combination Sum II
Problem:
第三遍写还是有问题。忘记了排序,index 忘记了 + 1.
思路:
和combination sum几乎一模一样。不允许重复那么就是startIndex = i+1。在for循环里面需要去除重复,也就是在树的同一层不能出现重复的数,否则答案会重复。其中一个判断条件是i != startIndex 而不是 i != 0。如果用i != 0 , [1,1,2] t =4, 这个例子就没有答案。直接把深度上重复的数给忽略了。
combination sum是数组里面不允许重复,II是在树的同一层不允许重复。
for循环一次其实就是铺开树的一层。
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:
[10, 1, 2, 7, 6, 1, 5]
and target 8
,A solution set is:
[ [1, 7], [1, 2, 5], [2, 6], [1, 1, 6] ]3/26/2018 update:
第三遍写还是有问题。忘记了排序,index 忘记了 + 1.
思路:
和combination sum几乎一模一样。不允许重复那么就是startIndex = i+1。在for循环里面需要去除重复,也就是在树的同一层不能出现重复的数,否则答案会重复。其中一个判断条件是i != startIndex 而不是 i != 0。如果用i != 0 , [1,1,2] t =4, 这个例子就没有答案。直接把深度上重复的数给忽略了。
combination sum是数组里面不允许重复,II是在树的同一层不允许重复。
for循环一次其实就是铺开树的一层。
评论
发表评论