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. 无重复字符的最长子串--滑动窗口