题解 | #牛群的编号重排#

牛群的编号重排

https://www.nowcoder.com/practice/220a216469c14a52b4eb6709e041feb1

知识点

数组

解题思路

以1,5,2,3,7举例。

1.从右到左找到非递减的数,5,如果没有找到直接就进入了步骤3

2.从5开始从左到右找到非递增的数,7。交换5和7之前的数3,此时数组为1,3,2,5,7。

3.反正3之后的数组,结果数组为1,3,7,5,2.

Java题解

import java.util.*;


public class Solution {
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param cows int整型一维数组 
     * @return int整型一维数组
     */
    public int[] nextPermutation (int[] cows) {
        // write code here
        int n = cows.length;
        int index = n - 2;
        while(index >= 0 && cows[index] <= cows[index + 1]){
            index --;
        }
        int tempIndex = index;
        if(index >= 0){ //找到非递减的数
            int num = cows[index++];
            while(index < n && cows[index] <= num){
                index++;
            }
            cows[tempIndex] = cows[index - 1];
            cows[index - 1] = num;
        }
        tempIndex ++;
        int right = n - 1;
        while(tempIndex < right){
            int temp = cows[tempIndex];
            cows[tempIndex++] = cows[right];
            cows[right--] = temp;
        }
        return cows;
    }
}

全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务