78. Subsets
Intuition
Complexity
Space Complexity
Time Complexity
Code
List<List<Integer>> allSubsets = new LinkedList<>();
// Recursive function to generate all subsets
public void generateSubsets(int[] nums, int index, List<Integer> currentSubset) {
// If we've considered all elements, add the current subset to the result
if (index >= nums.length) {
allSubsets.add(new ArrayList<>(currentSubset));
return;
}
// Option 1: Exclude the current element and move to the next
generateSubsets(nums, index + 1, currentSubset);
// Option 2: Include the current element
currentSubset.add(nums[index]);
generateSubsets(nums, index + 1, currentSubset);
// Backtrack: remove the last added element before returning
currentSubset.remove(currentSubset.size() - 1);
}
public List<List<Integer>> subsets(int[] nums) {
generateSubsets(nums, 0, new ArrayList<>(nums.length));
return allSubsets;
}
Last updated