46.全排列
链接:46.全排列
难度:Medium
标签:数组、回溯
简介:给定一个 没有重复 数字的序列,返回其所有可能的全排列。
题解 1 - typescript
- 编辑时间:2021-07-21
- 执行用时:88ms
- 内存消耗:41MB
- 编程语言:typescript
- 解法介绍:全排列。
function permute(nums: number[]): number[][] {
  const ans: number[][] = [];
  find();
  return ans;
  function find(list = nums, queue: number[] = []): void {
    if (list.length === 0) {
      ans.push(queue.slice());
      return;
    }
    for (let i = 0, l = list.length; i < l; i++) {
      queue.push(list[i]);
      find([...list.slice(0, i), ...list.slice(i + 1)], queue);
      queue.pop();
    }
  }
}
题解 2 - javascript
- 编辑时间:2020-04-25
- 执行用时:80ms
- 内存消耗:37.3MB
- 编程语言:javascript
- 解法介绍:通过递归对每层判断后压栈。
/**
 * @param {number[]} nums
 * @return {number[][]}
 */
var permute = function (nums) {
  const len = nums.length;
  if (len === 1) return [nums];
  const res = [];
  for (let i = 0; i < len; i++) {
    const newNums = permute(nums.filter((_, index) => index !== i));
    for (const newNum of newNums) res.push([nums[i]].concat(newNum));
  }
  return res;
};