//哈希表+回溯法
class Solution {
public:
vector<int>a;
vector<vector<int>> coll;
vector<vector<int>>result;
map<int,int>hash;
vector<vector<int>> permute(vector<int>& nums) {
//vector<vector<int>> coll;
for(int i=0;i<nums.size();i++){
a.push_back(0);
hash[nums[i]]=0;
}
if(nums.size()==0){
return coll;
}
pailie(0,nums);
return coll;
}
void pailie(int i,vector<int>num){
if(i==num.size()){
coll.push_back(a);
return;
}
for(int j=0;j<num.size();j++){
if(hash[num[j]]==1){
continue;
}
a[i]=num[j];
hash[num[j]]=1;
pailie(i+1,num);
hash[num[j]]=0;
}
}
};