下一个排列 (Next Permutation)

 

思路:

// @Title: 下一个排列 (Next Permutation)
// @Author: qisiii
// @Date: 2024-04-25 22:21:42
// @Runtime: 9 ms
// @Memory: 42.5 MB
// @comment: 
// @flag: 
class Solution {
    public void nextPermutation(int[] nums) {
        int l=0,j=0;
        for(int i=nums.length-1;i>0;i--){
            if(nums[i]>nums[i-1]){
                l=i-1;
                j=i;
                break;
            }
        }
        System.out.println(l+" "+j);
        if(j==0){
            reverse(nums,j);
            return;
        }
        //表明整体是倒序
        for(int i2=nums.length-1;i2>0;i2--){
            if(nums[l]<nums[i2]){
                int temp=nums[i2];
                nums[i2]=nums[l];
                nums[l]=temp;
                reverse(nums,j);
                break;
            }
        }
    }
    private void reverse(int[] nums,int j){
        int r=nums.length-1;
        while(j<r){
            int temp=nums[j];
                nums[j]=nums[r];
                nums[r]=temp;
                j++;
                r--;
        }
    }
}
Licensed under CC BY-NC-SA 4.0
最后更新于 2024-10-18