LeetCode Hot 100 --- 下一个排列(java图解超级详细)

Posted 小样5411

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCode Hot 100 --- 下一个排列(java图解超级详细)相关的知识,希望对你有一定的参考价值。

题目

分析

先理解一下题目,下一个排列什么意思
123,132,213,231,312,321

代码

class Solution {
    public void nextPermutation(int[] nums) {
        int len = nums.length;
        for (int i = len - 1; i > 0; i--) {
            //从后往前先找出第一个相邻的后一个大于前一个情况,此时的i-1位置就是需要交换的位置
            if (nums[i] > nums[i - 1]) {
                //对i自己和之后的元素排序,[i,len)从小到大,第一个大于i-1位置的进行交换,那么就是下一个排列
                Arrays.sort(nums, i, len);
                for (int j = i; j <len; j++) {
                    if (nums[j] > nums[i - 1]) {
                        int temp = nums[j];
                        nums[j] = nums[i - 1];
                        nums[i - 1] = temp;
                        return;
                    }
                }
            }
        }
    	Arrays.sort(nums);//最后3,2,1情况的下一个就是1,2,3要重新排列成最小的,这种情况上面的交换执行不了
		return;  
    }
 }

以上是关于LeetCode Hot 100 --- 下一个排列(java图解超级详细)的主要内容,如果未能解决你的问题,请参考以下文章

LeetCode Hot 100 --- 三数之和 (java详解)

leetcode的Hot100系列--3. 无重复字符的最长子串--滑动窗口

#yyds干货盘点# LeetCode 热题 HOT 100:接雨水

LeetCode Hot100 (5-10)

leetcode hot100解题总结 JS(持续更新)

LeetCode Hot100(11-15)