All Permutations (Backtracking) Visualizer

See how recursion builds every possible permutation of a set of numbers.

Visualization

Input Array

Number to Place

Current Permutation Being Built

Completed Permutations

Enter an array and click 'Visualize'.

Algorithm Code


1  public List> permute(int[] nums) {
2      List> res = new ArrayList<>();
3      backtrack(nums, 0, new ArrayList<>(), res);
4      return res;
5  }
6
7  public void backtrack(int[] nums, int idx, List curr, ...) {
8      if (idx == nums.length) {
9          res.add(new ArrayList<>(curr));
10         return;
11     }
12
13     int num = nums[idx];
14     for (int i = 0; i <= curr.size(); i++) { 
15         List newList = new ArrayList<>(curr);
16         newList.add(i, num);
17         backtrack(nums, idx + 1, newList, res);
18     }
19 }