Question
Given a collection of integers that might contain duplicates, nums, return all possible subsets.
Note: The solution set must not contain duplicate subsets.
For example,
If nums = [1,2,2]
, a solution is:
1 |
|
Analysis
典型的回溯。这是之前Subsets的延伸,对于直接解题的方案,每次循环元素的时候,把后面重复的忽略掉就可以了。可以分析一下例子[[]] —> [[],[1]] —> [[], [1], [2], [1,2]] —> [[], [1], [2], [1,2], [2,2], [1,2,2]]。 这里可以看出对于重复的元素,只在后来添加的元素上加上这个2. 即只在 [2], [1,2] 后面加上2. 所以这里对于一个新来的元素需要判断,如果相同的话,那么对于集合的起始点,是上一次添加元素之前的size.
对于回溯的方法解题, 这里也是需要合理的忽略掉重复的元素
Solution
记录所有可得到的集合
1 |
|
1 |
|
循环直接解题
1 |
|
1 |
|