题目:给定一个整型数组,找出比该数组按排列顺序大的下一个序列,如果该数组为最大序列,则输出最小序列
思路:字符串全排列问题,可以使用全排列非递归实现的方法,即从后向前用大数交换小数。
class Solution {
public:
void nextPermutation(vector<int> &num) {
int length=num.size();
if(length<=1)return;
int temp=length-1;
while(temp>0){
if(num[temp-1]<num[temp]){
break;
}
temp--;
}
if(temp==0){
reverse(num.begin(), num.end());
return;
}
temp--;
int temp_1=length-1;
while(temp_1>temp){
if(num[temp_1]>num[temp]){
int i=num[temp_1];
num[temp_1]=num[temp];
num[temp]=i;
break;
}
temp_1--;
}
reverse(num.begin()+temp+1, num.end());
}