Given an array nums of distinct integers, return all possible permutations, in any order.
Positions [0, k) are fixed. Swap each candidate from [k, n) into position k, recurse on k + 1, then swap back.
1function permute(nums: number[]): number[][] {2const res: number[][] = [];3function dfs(k: number) {4if (k === nums.length) { res.push([...nums]); return; }5for (let i = k; i < nums.length; i++) {6[nums[k], nums[i]] = [nums[i], nums[k]];7dfs(k + 1);8[nums[k], nums[i]] = [nums[i], nums[k]];9}10}11dfs(0);12return res;13}
Keep 1 at position 0.
Space: play/pause · ←/→: step