class Solution {
private:
bool nextPermutation(vector<int> &num){
int index, size = num.size(), swapIndex;
for(index = size - 2; index >= 0 && num[index] >= num[index + 1]; index--);
if(num[index] >= num[index + 1]){
return false;
}
for(swapIndex = size - 1; num[swapIndex] <= num[index]; swapIndex--);
swap(num[swapIndex], num[index]);
for(++index,--size; index<size; swap(num[index++], num[size--]));
return true;
}
public:
vector<vector<int> > permuteUnique(vector<int> &num) {
vector<vector<int> > ans;
sort(num.begin(), num.end());
do{
ans.push_back(num);
}while(nextPermutation(num));
return ans;
}
};
Leetcode Permutations II 最简单的解法
最新推荐文章于 2020-06-30 17:32:13 发布