给定一个不含重复数字的数组 nums ,返回其 所有可能的全排列 。你可以 按任意顺序 返回答案。
输入:nums = [1,2,3]
输出:[[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]]
输入:nums = [0,1]
输出:[[0,1],[1,0]]
输入:nums = [1]
输出:[[1]]
/** * @param {number[]} nums * @return {number[][]} */ var permute = function(nums) { let result = []; let temp = []; let len = nums.length; let backTracking = function(index,visited){ //只要选取到的长度等于 nums的长度 立即终止 if(temp.length === len){ result.push(temp.slice()); return; } // 每次选取都从第一个数字开始选取 for(let i = 0; i < len; i++){ if(visited[i]) continue; temp.push(nums[i]); //标记已经访问 visited[i] = true; backTracking(i+1,visited); temp.pop(); //取消标记 visited[i] = false; } } backTracking(0,[]); return result; };