题目:
给你一个整数数组 nums
,数组中的元素 互不相同 。返回该数组所有可能的子集(幂集)。
解集 不能 包含重复的子集。你可以按 任意顺序 返回解集。
方法:灵神 选 or 不选
class Solution {private final List<List<Integer>> ans = new ArrayList<>();private final List<Integer> path = new ArrayList<>();private int[] nums;public List<List<Integer>> subsets(int[] nums) {this.nums = nums;dfs(0);return ans; }// 注意区分 ans.add 和 path.addprivate void dfs(int i) {if (i == nums.length) {ans.add(new ArrayList<>(path));return;}dfs(i + 1);path.add(nums[i]);dfs(i + 1);path.remove(path.size() - 1); // 恢复现场}
}