下一个排列

下一个排列

/*
    4 5 3 2 1
    从后向前找第一个非降序元素. 从非降序后找大于非降序元素的最小值,两个交换,将非降序元素后的元素排序
     */
class Solution {
    public void nextPermutation(int[] nums) {
        int k = nums.length - 1;
        while (k > 0 && nums[k - 1] >= nums[k]) k --;
        if (k <= 0) Arrays.sort(nums);
        else {
            int t = k;
            while (t < nums.length && nums[t] > nums[k - 1]) t ++;
            t --;
            int tmp = nums[k - 1];
            nums[k - 1] = nums[t];
            nums[t] = tmp;
            Arrays.sort(nums, k, nums.length);
        }
    }
}
已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 技术黑板 设计师:CSDN官方博客 返回首页