当前位置:网站首页>【2022暑期】【LeetCode】31. 下一个排列

【2022暑期】【LeetCode】31. 下一个排列

2022-06-22 11:20:00 之井

学习思路,注意是从后面开始查

class Solution {
    
    public void nextPermutation(int[] nums) {
    
        int len = nums.length;
        int i = 0;
        for(i=len-1; i>0; i--){
    
            if(nums[i]<=nums[i-1]) continue;
            else{
    
                int l = 0;
                int min = Integer.MAX_VALUE;
                for(int k=i; k<len; k++){
    
                    if(nums[k]>nums[i-1]&&nums[k]<min){
    
                        l = k;
                        min = nums[k];
                    }
                }
                swap(nums,l,i-1);
                Arrays.sort(nums,i,len);
                break;
            }
        }
        if(i==0) Arrays.sort(nums);

    }
    public void swap(int[] nums,int i,int j){
    
        int a = nums[i];
        nums[i] = nums[j];
        nums[j] = a;
    }
}

虽然是照着题解,但是不摆烂!

原网站

版权声明
本文为[之井]所创,转载请带上原文链接,感谢
https://blog.csdn.net/mdzz_z/article/details/125382771