class Solution {
public:
vector<vector<int>> permuteUnique(vector<int>& nums) {
sort(nums.begin(),nums.end());
vector<vector<int>> res;
permuteUnique(nums,0,res);
return res;
}
private:
void permuteUnique(vector<int> nums,int begin,vector<vector<int>>& res) {
if(begin == nums.size() - 1)
{
res.push_back(nums);
return;
}
for(int i = begin;i < nums.size();i++)
{
if(begin!=i && nums[begin]==nums[i]) continue;
swap(nums[begin],nums[i]);
permuteUnique(nums,begin+1,res);
}
}
};
与46题不同的是这里不需要在函数permuteUnique处对nums以引用的方式传递,详细原因参考leetcode