leetcode 47全排列II
先进行一次排序,然后每次交换的两个数如果一致直接跳过该次循环
class Solution { public: vector<vector<int>> res; vector<vector<int>> permuteUnique(vector<int>& nums) { sort(nums.begin(), nums.end()); permu(nums,0,nums.size()-1); return res; } void permu(vector<int> 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); } } } };