给你一个整数数组 nums ,数组中的元素 互不相同 。返回该数组所有可能的子集(幂集)。
解集 不能 包含重复的子集。你可以按 任意顺序 返回解集。
解题思路递归+回溯。对于每一个元素选择拿与不拿,Java传递的是引用,添加元素递归后还得删除。
代码class Solution {
public List> subsets(int[] nums) {
List> ans = new ArrayList<>();
dfs(ans, new ArrayList(), 0, nums);
return ans;
}
private void dfs(List> ans, ArrayList now, int pos, int[] nums) {
if (pos == nums.length) {
ans.add(new ArrayList<>(now));
return;
}
dfs(ans, now, pos + 1, nums);
now.add(nums[pos]);
dfs(ans, now, pos + 1, nums);
now.remove(now.size() - 1);
}
}



