Subset
Given a set of distinct integers, S, return all possible subsets.
Note:
Elements in a subset must be in non-descending order.
The solution set must not contain duplicate subsets.
Also, the subsets should be sorted in ascending ( lexicographic ) order.
The list is not necessarily sorted.
Example :
If S = [1,2,3]
, a solution is:
[
[],
[1],
[1, 2],
[1, 2, 3],
[1, 3],
[2],
[2, 3],
[3],
]
class Solution {
public ArrayList<ArrayList<Integer>> subsets(ArrayList<Integer> nums) {
ArrayList<ArrayList<Integer>> list = new ArrayList<>();
Collections.sort(nums);
backtrack(list, new ArrayList<>(), nums, 0);
return list;
}
private void backtrack(ArrayList<ArrayList<Integer>> list, List<Integer> tempList, ArrayList<Integer> nums,
int start) {
list.add(new ArrayList<>(tempList));
for (int i = start; i < nums.size(); i++) {
tempList.add(nums.get(i));
backtrack(list, tempList, nums, i + 1);
tempList.remove(tempList.size() - 1);
}
}
}
Last updated