// TypeScript
function permute(nums: number[]): number[][] {
const ans: number[][] = [];
const swap = (arr: number[], i: number, j: number) => {
[arr[i], arr[j]] = [arr[j], arr[i]];
}
const backtrack = (current: number[], index: number) => {
if (index === nums.length) {
ans.push(current);
return;
}
for (let i = index; i < nums.length; i++) {
swap(current, i, index);
backtrack(current, index + 1);
swap(current, i, index);
}
}
backtrack(nums, 0);
return ans;
};