下一个排列
#include<vector>
#include<algorithm>
#include<iostream>
using namespace std;
class Solution {
public:
void nextPermutation(vector<int> &num) {
if (num.size() <= 1)
return;
int t = num.size() - 1;
bool isMaxSorted = true;
for (; t > 0; --t)
{
if (num[t] > num[t - 1])
{
isMaxSorted = false;
break;
}
}
if (isMaxSorted)
{
reverse(num.begin(), num.end());
return;
}
int i = num.size() - 1;
for (; i >= t; --i)
{
if (num[i] > num[t - 1])
{
swap(num[i], num[t - 1]);
sort(num.begin() + t, num.end());
return;
}
}
}
};