Next Permutation 下一个排列
Description
Given a list of integers, which denote a permutation.Find the next permutation in ascending order.
public class Solution {
/**
* @param nums: A list of integers
* @return: A list of integers
*/
public int[] nextPermutation(int[] nums) {
// write your code here
if(nums==null||nums.length==0)
return nums;
int i=nums.length-2;
while(i>=0&&nums[i]>=nums[i+1])
i--;
if(i>=0){
int j=i+1;
while(j<nums.length&&nums[j]>nums[i])
j++;
j--;
swap(nums,i,j);
}
reverse(nums,i+1,nums.length-1);
return nums ;
}
public void swap(int[] nums,int i,int j){
int temp = nums[i];
nums[i]=nums[j];
nums[j]=temp;
}
public void reverse(int[] nums,int i,int j){
while(i<j)
swap(nums,i++,j--);
}
}
这篇博客介绍了如何使用Java实现找到一个整数数组(排列)的下一个升序排列。通过寻找数组中最后一个逆序对并交换,然后反转剩余部分来达到目的。这个方法适用于数组的原地修改,且具有较高的效率。
1329

被折叠的 条评论
为什么被折叠?



