(1)递归
class Solution {
private:
vector<vector<int>> v;
public:
void helper(vector<int> nums,int l,int r) {
if(l==r) {
v.push_back(nums);
return;
}
for(int i=l;i<=r;i++) {
if(nums[i]!=nums[l] || l==i) {
swap(nums[i],nums[l]);
helper(nums,l+1, r);
}
}
return;
}
vector<vector<int>> permuteUnique(vector<int>& nums) {
sort(nums.begin(),nums.end());
helper(nums,0, nums.size()-1);
return v;
}
};