给你一个整数数组
nums
,数组中的元素 互不相同 。返回该数组所有可能的子集(幂集)。解集 不能 包含重复的子集。你可以按 任意顺序 返回解集。
回溯法
class Solution {public List<List<Integer>> subsets(int[] nums) {List<List<Integer>> res = new ArrayList<>();if(nums.length == 0){return res;}List<Integer> path = new ArrayList<>();dfs(0,nums,path,res);return res;}private void dfs(int begin,int[] nums,List<Integer> path,List<List<Integer>> res){//放在这会把[]空的结果算上res.add(new ArrayList<>(path));for(int i = begin;i<nums.length;i++){path.add(nums[i]);// res.add(new ArrayList<>(path));,没有空结果,不对dfs(i+1,nums,path,res);path.remove(path.size()-1);}}
}