全排列

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

示例:

输入: [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) {
   let temp =[];
    var check = function(arr){
        if(arr.length == nums.length ){//停止循环的条件。
            temp.push(arr.slice());
           return;
        }
        for(let i=0;i<nums.length;i++){//循环路径的最顶层
            if(arr.length===0||(arr.length>0&&(arr.indexOf(nums[i])==-1))){//如果是arr数组中是空的话,直接Push进去,不用担心列表中重复的问题,如果不是空的话,就要将重复的数据排除
                arr.push(nums[i]);
                check(arr);//一个分支一个分支的判断,如果分支上Push进来的元素已经够了就让其
                arr.pop();//当满足返回条件之后,进行回溯
            }
        }
    }
    check([]);
    return temp;
};

回溯:掌握不清晰

 

 

 

 

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/permutations
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

posted @ 2019-10-12 18:31  唐糖PJS  阅读(149)  评论(0编辑  收藏  举报