Backtracking/Medium

SubsetsPRO PASS

Time: O(2^N)Space: O(N)

Step 1: Setup & Initialization - Subsets

Branching decision tree: include or exclude each element.

Array Elements & Pointers
10
[0]
20
[1]
30
[2]
40
[3]
50
[4]
Live Variables & Invariants
status:Initialized
pattern:Subsets
Step 1 / 333%
Solution Code
1
function subsets(nums: number[]): number[][] {
2
  const res: number[][] = [];
3
  function backtrack(start: number, curr: number[]) {
4
    res.push([...curr]);
5
    for (let i = start; i < nums.length; i++) {
6
      curr.push(nums[i]); backtrack(i + 1, curr); curr.pop();
7
    }
8
  }
9
  backtrack(0, []);
10
  return res;
11
}

Custom Test Case Runner

Input your custom values and visualize step-by-step trace

Quick Presets:

AI DSA Coach

Contextual Tutor for Subsets

Hello! I am your AI DSA Tutor for **Subsets** (Backtracking). Ask me anything about this algorithm, time complexity, or request a step hint!