class Solution {
public:
vector<vector<int> > permuteUnique(vector<int> &num) {
sort(num.begin(),num.end());
vector<vector<int>>ans;
dfs(num,0,ans);
sort(ans.begin(),ans.end());
ans.erase(unique(ans.begin(),ans.end()),ans.end());
return ans;
}
void dfs(vector<int>&num,int index,vector<vector<int>>&ans)
{
if(index==num.size())
{
ans.push_back(num);
return;
}
for(int i=index;i<num.size();i++)
{
if(i!=index&&num[i]==num[index])continue;
swap(num[i],num[index]);
dfs(num,index+1,ans);
swap(num[i],num[index]);
}
}
};
网友评论