Skip to main content

55. 没有重复项数字的全排列(38. 字符串的排列)

给出一组数字,返回该组数字的所有排列 例如: [1,2,3]的所有排列如下 [1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2], [3,2,1]. (以数字在数组中的位置靠前为优先级,按字典序排列输出。)

示例

[1,2,3]
[[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]]

答案

var permute = function(nums) {
let res = [];

function backTrace(path) {
if(path.length === nums.length) return res.push(path.slice().join('')); // 字符串
// if(path.length === nums.length) return res.push(path.slice()); // 数组

for (let i = 0; i < nums.length; i++) {
// 将路径中没出现过的字母,拼接到路劲,再次组合
if(path.indexOf(nums[i]) === -1) {
path.push(nums[i]);
backTrace(path);
path.pop(); // 全部删除
}

}

}
backTrace([]);

return res;
};


var str = [1,2,3]
console.log(permute(str))