leetcode31
字典序:对于两个字符串,大小关系取决于两个字符串*从左到右第一个不同字符的 ASCII 值的大小关系。
算法思路:
1.从后往前寻找相邻较小数,记录位置i
2.将i靠右位置的所有数遍历,得到另一个较小数
3.将两个较小数交换
4.将i靠右的所有数进行排序
在这 public void nextPermutation(int[] nums) {
//1.从后往前寻找相邻较小数,记录位置i
int length = nums.length ;
if (length <= 1) { return; }
int n = -1;
for (int i = length-1; i > 0; i--) {
if (nums[i-1] < nums[i]){
n = i-1;
break;
}
}
if (n == -1){
Arrays.sort(nums);
return;
}
//4.将i靠右的所有数进行排序
//2.将i靠右位置的所有数遍历,得到第一个比num[n]大的较小数
Arrays.sort(nums,n+1,length);
int l = length-1;
if(length-1 - n > 1){
for (int i = length-1; i > n; i--) {
if (nums[n] < nums[i]){
l = i;
}
}
}
//3.将两个较小数交换
swap(nums,n,l);
}
public void swap(int[] nums,int i,int j){
int temp = nums[i];
nums[i] = nums[j];
nums[j] = temp;
}里插入代码片