先进行一次排序,然后每次交换的两个数如果一致直接跳过该次循环
class Solution {public: vector> res; vector > permuteUnique(vector & nums) { sort(nums.begin(), nums.end()); permu(nums,0,nums.size()-1); return res; } void permu(vector nums,int left,int right) { if(left==right) res.push_back(nums); else { for(int i=left;i<=right;i++) { if (i != left && nums[left] == nums[i]) continue;//前后两个数如果一样直接跳过这次 swap(nums[left],nums[i]); permu(nums,left+1,right); } } } };