题解 | #牛群的编号重排#
牛群的编号重排
https://www.nowcoder.com/practice/220a216469c14a52b4eb6709e041feb1
题目考察的知识点是:
本题考察的是排序。
题目解答方法的文字分析:
该题目难点在于理解,我们如何找到下一个字典序更小的排列,首先我们需要知道,下一个字典序更小的数字是什么,如何才能让一个数字的排列更小。
本题解析所用的编程语言:
java语言。
完整且正确的编程代码:
import java.util.*;
public class Solution {
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param cows int整型一维数组
* @return int整型一维数组
*/
public int[] nextPermutation (int[] cows) {
// write code here
int i= cows.length-2;
while(i>=0&&cows[i]<=cows[i+1]){
i--;
}
if (i>=0){
int j=cows.length-1;
while(j>=0&&cows[i]<=cows[j]){
j--;
}
swap(cows,i,j);
}
reverse(cows,i+1,cows.length-1);
return cows;
}
public void swap(int[] nums,int left,int right){
int temp=nums[left];
nums[left]=nums[right];
nums[right]=temp;
}
public void reverse(int[] nums,int l,int r){
while(l<r){
swap(nums,l,r);
l++;
r--;
}
}
}
#题解#