/*
4 5 3 2 1
从后向前找第一个非降序元素. 从非降序后找大于非降序元素的最小值,两个交换,将非降序元素后的元素排序
*/
class Solution {
public void nextPermutation(int[] nums) {
int k = nums.length - 1;
while (k > 0 && nums[k - 1] >= nums[k]) k --;
if (k <= 0) Arrays.sort(nums);
else {
int t = k;
while (t < nums.length && nums[t] > nums[k - 1]) t ++;
t --;
int tmp = nums[k - 1];
nums[k - 1] = nums[t];
nums[t] = tmp;
Arrays.sort(nums, k, nums.length);
}
}
}