Question
Given a set of distinct integers, nums, return all possible subsets.
Note: The solution set must not contain duplicate subsets.
给出一个无重复整数的集合nums,返回所有可能的子集(子集不能重复)
Example
If nums = [1,2,3], a solution is:
[
[3],
[1],
[2],
[1,2,3],
[1,3],
[2,3],
[1,2],
[]
]
Solution
回溯解。遍历以当前元素为头的子集并保存结果即可
public class Solution { public List<List<Integer>> subsets(int[] nums) { List<List<Integer>> res = new ArrayList<>(); backtracking(nums, 0, res, new ArrayList<>()); return res; } public void backtracking(int[] nums, int start, List<List<Integer>> res, List<Integer> temp){ res.add(new ArrayList<>(temp)); for(int i = start;i < nums.length; i++){ temp.add(nums[i]); backtracking(nums, i + 1, res, temp); temp.remove(temp.size() - 1); } } }