var permute = function(nums) {
if (!nums.length) {
return [];
}
nums.sort((a, b) => a - b);
let res = [], path = [];
function dfs(visit, path) {
if (path.length == nums.length) {
res.push([...path]);
return;
}
for(let i = 0; i < nums.length; i ++) {
if (visit[i]) continue;
let cur = nums[i];
visit[i] = true;
path.push(cur);
dfs(visit, path);
visit[i] = false;
path.pop()
}
}
dfs([], path);
return res;
};