class Solution {
public List<List<Integer>> subsets(int[] nums) {
List<Integer> cur = new ArrayList();
List<List<Integer>> res = new ArrayList();
dfs(nums, 0, cur, res);
return res;
}
public void dfs(int[] nums, int start, List<Integer> cur, List<List<Integer>> res) {
if (start == nums.length) {
res.add(new ArrayList(cur));
return;
}
dfs(nums, start + 1, cur, res);
cur.add(nums[start]);
dfs(nums, start + 1, cur, res);
cur.remove(cur.size() - 1);
}
}