var permute = function(nums) {
const result = [];
const set = new Set();
dfs(nums, [], result, set);
return result;
};
const dfs = (nums, current, result, set) => {
if(current.length === nums.length) return result.push(current);
for(let i = 0; i < nums.length; i++){
if(set.has(nums[i])) continue;
set.add(nums[i]);
dfs(nums, [...current, nums[i]], result, set);
set.delete(nums[i]);
}
}