31. 下一个排列
Posted 五月的海湾
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了31. 下一个排列相关的知识,希望对你有一定的参考价值。
package leetcode; public class demo_31 { public void nextPermutation(int[] nums) { int i; int j; for(i=nums.length-1;i>0;i--) { //从右往左寻找出nums[i-1]<nums[i] if(nums[i-1]<nums[i]) { int min=i; //从i开始寻找最小的一个但是大于nums[i-1]的位置 for(j=nums.length-1;j>=i;j--) { //从i开始的数组是非降序的,第一个大于nums[i-1]的就是最小的 if(nums[j]>nums[i-1]) { min=j; break; } } //交换nums[i-1]和nums[min]的位置 int k=nums[i-1]; nums[i-1]=nums[min]; nums[min]=k; break; } } //因为从i开始都是非降序的,所以要调整为从i开始最小的数组 j=nums.length-1; while(i<j) { int k=nums[i]; nums[i]=nums[j]; nums[j]=k; i++; j--; } for(int k:nums) { System.out.print(k+" "); } } public static void main(String[] args) { // TODO Auto-generated method stub demo_31 d31=new demo_31(); int[] nums= {2,3,1,3,3}; d31.nextPermutation(nums); } }
以上是关于31. 下一个排列的主要内容,如果未能解决你的问题,请参考以下文章
LeetCode 31 Next Permutation(下一个全排列)
Leecode31. 下一个排列——Leecode大厂热题100道系列