Permutations Visualizer & Step-by-Step Algorithm Solution

Generate all possible permutations of an array of distinct integers using recursive backtracking and a visited set.

Category: backtracking | Difficulty: Medium

Tags: Backtracking, Recursion, Permutations, Decision Tree, LeetCode 46

Permutations

[]
VISITED SET
(Empty Set)
100%
state
nums[1, 2, 3]
n3
curr[]
set{}
found0
Initialization
1/154
Explanation

Start permute with nums = [1, 2, 3]. Find all 3! = 6 permutations.

Source Code
1function permute(nums: number[]): number[][] {
2 const result: number[][] = [];
3 const n = nums.length;
4 const set = new Set<number>();
5
6 function backtrack(curr: number[]) {
7 if (curr.length === n) {
8 result.push([...curr]);
9 return;
10 }
11
12 for (let i = 0; i < n; i++) {
13 if (set.has(nums[i])) continue;
14 set.add(nums[i]);
15 curr.push(nums[i]);
16 backtrack(curr);
17 curr.pop();
18 set.delete(nums[i]);
19 }
20 }
21 backtrack([]);
22 return result;
23}