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}| Variable | Value |
|---|---|
nums | [1,2,3] |
result | - |
| Depth | Function Call |
|---|---|
| 1 | subsets([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}