李志成的个人网站

李志成的个人网站

  • 博客
  • ·
  • 留言
  • ·
  • 友链
  • ·
  • 关于
  • ·
  • Rss

leetcode算法题-全排列

发表于2019-03-03 06:07:05分类于算法0条评论阅读次数35

题目

给定一个没有重复数字的序列,返回其所有可能的全排列。

题目地址:https://leetcode-cn.com/problems/permutations/

示例:

输入: [1,2,3]
输出:
[
  [1,2,3],
  [1,3,2],
  [2,1,3],
  [2,3,1],
  [3,1,2],
  [3,2,1]
]

代码

/**
 * @param {number[]} nums
 * @return {number[][]}
 */
var permute = function(nums) {
    /**
    * 采用递归插入元素
    **/
    if (nums.length == 1) return [nums];
    const result = [];
    for(let i=0; i<nums.length; i++) {
        // 截取一位数做为保留,每次递归截取一次,直到元素截取完毕。
        const nextRes = permute([...nums.slice(0,i), ...nums.slice(i+1)]);
        for(const list of nextRes) {
            // 放到数组开头
            list.unshift(nums[i]);
            result.push(list);
        }
    }
    return result;
};

--发表评论--

🚀support markdown (* ̄▽ ̄*)ブ