https://leetcode.com/problems/permutations-ii/
这道题惊讶了一下,竟然超过了百分之94的cpp提交
思路很简单next_permutation就行了。
class Solution {
public:
vector< vector<int> > permuteUnique(vector<int>& nums) {
vector < vector<int> > ret;
if(nums.size() == 0) return ret;
sort(nums.begin(), nums.end());
ret.push_back(nums);
int flag ;
do {
flag = 0;
int left = 0,right = nums.size()-1;
for(int i=nums.size()-2;i>=0;i--) {
if(nums[i] < nums[i+1]) {
left = i;
flag = 1;
break;
}
}
if(flag) {
for(int i= nums.size()-1;i>=0;i--) {
if(nums[i] > nums[left]) {
right = i;
swap(nums[left], nums[right]);
flag ++;
break;
}
}
if(flag == 2) {
reverse(nums.begin()+left+1, nums.end());
ret.push_back(nums);
}
}
} while(flag==2);
return ret;
}
};