classSolution{publicvoidnextPermutation(int[] nums){//降序遍历,找到第一个后者>前者的位置x,以此为轴,找到后方<=x且>x-1的值,交换即可,x后边应当变为升序int len = nums.length;int j;boolean jud =false;if(len <=1)return;if(len ==2){change(nums,0,1);return;}for(int i = len -1; i >=0; i--){if(nums[i]> nums[i -1]){//[i,len-1]中找出一个比i-1大的最少的数if(i == len -1){change(nums, i -1, i);return;}
j = i +1;for(; j < len; j++){if(nums[j]<= nums[i -1]){//找到,交换change(nums, i -1, j -1);//然后排序,接着break
Arrays.sort(nums, i, len);return;}}change(nums, i -1, len -1);
Arrays.sort(nums, i, len);return;}}
Arrays.sort(nums);}publicvoidchange(int[] nums,int i,int j){int temp = nums[i];
nums[i]= nums[j];
nums[j]= temp;}}