31.
实现获取下一个排列的函数,算法需要将给定数字序列重新排列成字典序中下一个更大的排列。
如果不存在下一个更大的排列,则将数字重新排列成最小的排列(即升序排列)。
必须原地修改,只允许使用额外常数空间。
以下是一些例子,输入位于左侧列,其相应输出位于右侧列。
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/next-permutation
解法:
public static void nextPermutation(int[] nums) {
int t;
for(int i=nums.length-1;i>=1;i--){
if(nums[i]>nums[i-1]){
t=nums[i];
nums[i]=nums[i-1];
nums[i-1]=t;
System.out.println(Arrays.toString(nums));
return ;
}
}
int[] nun=reverseArray(nums);
System.out.println(Arrays.toString(nun));
}
public static int[] reverseArray(int[] nums) {
int[] new_array = new int[nums.length];
for (int i = 0; i < nums.length; i++) {
new_array[i] = nums[nums.length - i - 1];
}
return new_array;
}
public static void main(String[] args) {
int[] nums={1,2,3};
nextPermutation(nums);
}