Question
Given a set of distinct integers, nums, return all possible subsets.
Note: The solution set must not contain duplicate subsets.
For example,
If nums = [1,2,3]
, a solution is:
1 |
|
Analysis
典型的回溯。解题的时候第一想的是怎么样才是一个合适的退出条件。想到的是在长度满足的时候。就是外层循环来找特定长度的集合,这样的话指定一个长度,相当于就是回溯的出口。
这个解可以进一步简化,事实上在对每一个size回溯的时候,我们需要判断长度到达size,这时候才记录下来。事实上对于所有遍历到的值,都可以直接记录下来,这样也不用再进行一次外层size的循环。
对于这道题可以直接进行循环解。即一位位的向上叠加。思路如下,对解集合先放置一个空集合。[[]], 然后对于每新来的一个数,遍历解集合,并在解集合的元素上加上新的元素,比如,这样的一个解集合演化。[[]] —>[[], [1]] —>[[], [1], [2], [1,2]] —> [[], [1], [2], [1,2], [3], [1,3], [2,3], [1,2,3]]
Solution
对每个size回溯
1 |
|
1 |
|
记录所有可得到的集合
1 |
|
1 |
|
循环直接解题
1 |
|
1 |
|