原文链接
题目描述
题目链接:
解题思路
代码演示:
class Solution {
public void nextPermutation(int[] nums) {
int i = nums.length - 2;
for (; i >= 0; i--) {
if (nums[i] < nums[i + 1]) {
break;
}
}
if (i == -1) {
reverseArray(nums, 0, nums.length - 1);
return ;
}
int j = i + 1;
for (int k = nums.length - 1; k >= j; k--) {
if (nums[k] > nums[i]) {
int temp = nums[k];
nums[k] = nums[i];
nums[i] = temp;
break;
}
}
reverseArray(nums, j, nums.length - 1);
}
private void reverseArray(int[] nums, int left, int right) {
if (nums == null || nums.length == 0) {
return;
}
while (left < right) {
int temp = nums[left];
nums[left] = nums[right];
nums[right] = temp;
left ++;
right --;
}
}
}