1 | 幂集。编写一种方法,返回某集合的所有子集。集合中不包含重复的元素。 |
回溯法
1 | class Solution { |
非递归
- 添加一个空集,结果是[]
- 访问数字1,对原来的子集追加1,结果是[],[1]
- 访问数字2,对原来的子集追加2,结果是[],[1],[2],[1,2]
- 访问数字3,对原来的子集追加3,结果是[],[1],[2],[1,2],[3][1,3],[2,3],[1,2,3]
代码实现如下:
1 | public List<List<Integer>> subsets(int[] nums) { |
优雅的回溯
1 | public List<List<Integer>> subsets(int[] nums) { |
位运算
1 | nums = [1, 2, 3],长度为3,取看成是1,不取看成是0. |
1 | class Solution { |
位运算
1 | public static List<List<Integer>> subsets(int[] nums) { |
参考文献