相关标签
一、题目要求
二、题解和代码实现
1.题解
2.代码实现
代码如下(示例):
class Solution {
public void nextPermutation(int[] nums) {
if (nums.length<2){// 当nums只要一个元素时,不用操作
return;
}
for (int i = nums.length-1; i >0; i--) {//从后面往前面遍历
if (nums[i]>nums[i-1]){//找到后面元素比前面元素大的位置,那么下个序列要调换nums[i-1]的位置
Arrays.sort(nums,i,nums.length);//因为要找下一个最小序列,所以i下标后面的元素都要是顺序的才符合要求
for (int j = i; j <nums.length ; j++) {//因为上面已经顺序遍历了,从i下标开始遍历,
if (nums[j]>nums[i-1]){//找到第一个大于i-1下标元素的位置,交换这个位置j和i-1,这样就符合找到下一个最小序列
int temp=nums[j];
nums[j]=nums[i-1];
nums[i-1]=temp;
return;
}
}
}
}
Arrays.sort(nums);//当走到这里,说明nums是倒序的,没有下一个序列,直接变成顺序,就是答案
return;
}
}