作者:东东84321 | 来源:互联网 | 2023-08-08 13:35
给定一组不含重复元素的整数数组 nums,返回该数组所有可能的子集(幂集)。
说明:解集不能包含重复的子集。
示例:
输入: nums = [1,2,3]
输出:
[[3],[1],[2],[1,2,3],[1,3],[2,3],[1,2],[]
]
第一种是按位运算排名不是很理想
public List> subsetswei(int[] nums) {List> res &#61; new ArrayList<>();if (nums.length &#61;&#61; 0) return res;//二进制最大的数int max &#61; (int) Math.pow(2, nums.length);//每一个进行循环比如是三位也就是1-7循环看看是哪一位二进制七位for (int i &#61; 1; i rr &#61; new ArrayList<>();for (int j &#61; 0; j (rr));}return res;}
第二种是dfs比较理想
public List> subsets(int[] nums) {List> res &#61; new ArrayList<>();if (nums.length &#61;&#61; 0) return res;res.add(new ArrayList());dfs(0, nums, res, new ArrayList());return res;}public void dfs(int indx, int[] nums, List> res, List rr) {for (int i &#61; indx; i (rr));//继续下一个数字dfs(i&#43;1,nums,res,rr);rr.remove(rr.size()-1);}}