这种输入数组有重复元素的情况,就需要给一个visited的boolean数组了。
var permuteUnique = function(nums) {
nums.sort((a,b)=>a-b);
let n=nums.length;
let res=[];
let visited=[...Array(n)].map(_=>false);
backtracking([],visited); //加了个visited进括号里去快了很多~~~
return res;
function backtracking(temp,visited){
if(temp.length==n){
res.push([...temp]);
return;
}
for(var i=0;i<n;i++){
if(visited[i]||(i>0&&!visited[i-1]&&nums[i]==nums[i-1])) continue;
visited[i]=true;
temp.push(nums[i]);
backtracking(temp,visited);
visited[i]=false;
temp.pop();
}
}
};