67,634
社区成员
发帖
与我相关
我的任务
分享
class Solution {
public void nextPermutation(int[] nums) {
//从后往前
int i=0;
for(i=nums.length-1 ;i>0;i--){
//判断有无下一个大的序列
if(nums[i]>nums[i-1]){
//将i-nums.length排序,查找大于nums[i-1]且差值最小的数与nums[i-1]进行交换
//从小到大排了之后 选一个比i-1大的去交换 形成下一个排列
Arrays.sort(nums,i,nums.length);
for(int j=i;j<nums.length;j++){
if(nums[j]>nums[i-1]){
int temp = nums[i-1];
nums[i-1] = nums[j];
nums[j] = temp;
return;
}
}
}
}
if(i==0) Arrays.sort(nums);
}
}