/**
*
* @param num int整型一维数组
* @return int整型二维数组
*/
function permute(num) {
// write code here
num = num.sort((a, b) => { return a - b });
let ans = [];
function dfs(num, index) {
let data = [...num];
let len = data.length;
if (index == len - 1) {
// 若执行到最后一个元素,则添加数组
ans.push(data);
return;
}
for (let i = index; i < len; ++i) {
// 依次交换index下标元素和各个元素
let t = data[i];
data[i] = data[index];
data[index] = t;
// 递归调用本身,直到index下标后所有元素都被交换
dfs(data, index + 1);
// 依次还原被交换的index下标元素和各个元素
t = data[i];
data[i] = data[index];
data[index] = t;
}
}
dfs(num, 0);
ans = ans.sort((a, b) => {
// 按照序列化以后的数组进行排序
return JSON.stringify(a) - JSON.stringify(b)
});
return ans;
}
module.exports = {
permute: permute
};