这一题多了一个条件就是,会有重复的数字,
在上一题的基础上加一个约束条件就可以了。
class Solution {
public:
vector<vector<int>> ans;
vector<int> res;
int vis[100005];
vector<vector<int>> permuteUnique(vector<int>& nums) {
sort(nums.begin(),nums.end());
fun(nums,0);
return ans;
}
void fun(vector<int> nums,int num)
{
if(num==nums.size())
{
ans.push_back(res);
return;
}
for(int i=0;i<nums.size();i++)
{
if(i!=0&&nums[i-1]==nums[i]&&vis[i-1]==1)
continue;
if(vis[i]==0)
{
vis[i]=1;
res.push_back(nums[i]);
fun(nums,num+1);
res.pop_back();
vis[i]=0;
}
}
}
};