題目:
給你一個整數數組?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); // 恢復現場}
}