网站建设网站建/seo网络推广优化
题目
来源:全排列
给定一个 没有重复 数字的序列,返回其所有可能的全排列。
示例
解题思路及代码
做这题的时候,参照的是做第78题子集的模板,目前对递归理解的还不是很透彻,先挖个坑,
1. 代码
var permute = function(nums) {let track = [];let res = [];let backtrack = function(track) {if (track.length == nums.length) {res.push([...track]);return;}for (let i = 0; i < nums.length; i++) {if (track.includes(nums[i])) {continue;}track.push(nums[i]);backtrack(track);track.pop();}}backtrack(track);return res;
};
2. 代码思路
从第一个元素开始,我们只需要按顺序枚举每一位可能出现的情况,已经选择的数字在接下来要确定的数字中不能出现。按照这种策略选取就能够做到不重不漏,把可能的全排列都枚举出来。
回溯,数组是几个元素,所以全排列也要返回几个元素,长度相同时,push进res数组返回,即为终止条件。因为是全排列,所以我们每次都要从头全部遍历,这样的话可能会重复遍历一些数字,所以在push进track时,需要先判断track中是否包含该元素。