AlgoMaster Logo

Subsets

nums=[1, 2, 3]
1public List<List<Integer>> subsets(int[] nums) {
2    List<List<Integer>> result = new ArrayList<>();
3    backtrack(0, new ArrayList<>(), nums, result);
4    return result;
5}
6
7private void backtrack(int index, List<Integer> current, int[] nums, List<List<Integer>> result) {
8    // Base case: reached end
9    if (index == nums.length) {
10        result.add(new ArrayList<>(current));
11        return;
12    }
13
14    // Include nums[index]
15    current.add(nums[index]);
16    backtrack(index + 1, current, nums, result);
17
18    // Backtrack: exclude nums[index]
19    current.remove(current.size() - 1);
20    backtrack(index + 1, current, nums, result);
21}
0 / 54
[][][][][][][][][][][][][][][]