下一个排列
leetcode
public void nextPermutation(int[] nums) {
if (nums.length < 2) return;
int len = nums.length;
int i = len - 2;
// 从后向前找到递减的第一个数
while (i >= 0 && nums[i] >= nums[i + 1]) i--;
int j = len - 1;
// 找到交换比该数大的最小数,未找到说明说明序列递减
if (i >= 0) {
while (j > i && nums[i] >= nums[j]) j--;
int temp = nums[i];
nums[i] = nums[j];
nums[j] = temp;
}
// 排序递减后的数
Arrays.sort(nums, i + 1, len);
}