Skip to content

46. 全排列

给定一个不含重复数字的数组nums,返回其所有可能的全排列。你可以按任意顺序返回答案。

示例:

js
输入:nums = [1,2,3]
输出:[[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]]
参考答案
ts
function permute(nums: number[]): number[][] {
  const ans = [];
  const used = {};

  function dfs(path) {
    if (path.length === nums.length) {
      ans.push(path.slice());
      return;
    }
    for (const num of nums) {
      if (used[num] === true) continue;
      path.push(num);
      used[num] = true;
      dfs(path);
      path.pop();
      used[num] = false;
    }
  }

  dfs([]);

  return ans;
}