全排列
给定一个没有重复数字的序列,返回其所有可能的全排列。
示例:
输入: [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
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。