因为46题已做,本题只需要判断是否重复即可
void perM(std::vector<std::vector<int>> &a,std::vector<int> &b,std::vector<int>&nums,std::vector<int>&v,int number,int len){
if(len+1==number){
for(int i=0;i<a.size();i++){
if(a[i]==v)
return;
}
a.push_back(v);
return;
}
else {
for(int i=0;i<=len;i++) {
if (b[i] == 0) {
v.push_back(nums[i]);
number++;
b[i]=1;
perM(a,b,nums,v,number,len);
b[i]=0;
number--;
v.pop_back();
}
}
}
}
std::vector<std::vector<int>> permuteUnique(std::vector<int>& nums) {
std::vector<std::vector<int>> a;
int len=nums.size();
std::vector<int> ch;
for(int i=0;i<nums.size();i++){
ch.push_back(0);
}
std::vector<int> v;
if(len==0)
return a;
else
perM(a,ch,nums,v,0,len-1);
return a;
}