class Solution {
public void nextPermutation(int[] nums) {
//1.找第一个小于右边的数
int n = nums.length;
int firstNum = n-1,firstLarge = n-1;
for(int i = n-2;i >= 0;i--){
if(nums[i] < nums[i+1]){
firstNum = i;
break;
}
}
if(firstNum == n-1)
Arrays.sort(nums);
else{
//2.找第一个比该数大的
for(int i = n-1;i >= 0;i--){
if(nums[i] > nums[firstNum]){
swap(nums,firstNum,i);
break;
}
}
//3.交换,并将后面的数排序
Arrays.sort(nums,firstNum+1,n);
}
}
public void swap(int[] nums,int i,int j){
int temp = nums[i];
nums[i] = nums[j];
nums[j] = temp;
}
}
leetcode31. 下一个排列
最新推荐文章于 2024-07-08 22:12:26 发布