这道题的思路是从后往前历遍,找到第一个非递增的数,然后和后面的数里大于它的最小数交换,然后对后面的数排序即可,如果全部是从前往后递减,则对整个数排序
class Solution11 {
public void nextPermutation(int[] num) {
int i = num.length-1;
while(--i>=0){
if(num[i]<num[i+1]){
int min = num[i+1];
int ind = i+1;
for(int j=i+2;j<num.length;j++){
if(num[j]<min&&num[j]>num[i]){
min=num[j];
ind=j;
}
}
int tmp = num[ind];
num[ind]=num[i];
num[i]=tmp;
if(i+1<num.length)
Arrays.sort(num,i+1,num.length);
return;
}
}
Arrays.sort(num);
return;
}
}