难度:中等
给定一组不含重复元素的整数数组 nums,返回该数组所有可能的子集(幂集)。
说明:解集不能包含重复的子集。
示例:
输入: nums = [1,2,3] 输出: [ [3], [1], [2], [1,2,3], [1,3], [2,3], [1,2], [] ]
分析:
用回溯法
代码:
class Solution {
public List<List<Integer>> subsets(int[] nums) {
List<List<Integer>> ans = new ArrayList<>();
List<Integer> one = new ArrayList<>();
dfs(0,nums,one,ans);
return ans;
}
private void dfs(int i, int[] nums, List<Integer> one, List<List<Integer>> ans) {
if(i == nums.length){
ans.add(new ArrayList<>(one));
return;
}
one.add(nums[i]);
dfs(i+1,nums,one,ans);
one.remove(one.size()-1);
dfs(i+1,nums,one,ans);
}
}
结果: