题解 | 牛群的编号重排

牛群的编号重排

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

import java.util.*;


public class Solution {
    // 4, 2, 3, 1
    // 4, 2, 1, 3
    public int[] nextPermutation (int[] cows) {
        final int n = cows.length;
        if (n == 1) {
            return cows;
        }
        int i = n - 2;
        // find --_-- 凹
        while (i >= 0 && cows[i] <= cows[i + 1]) {
            --i;
        }
        if (i >= 0) {
            int j = n - 1;
            // find first cow le cows[i]
            while (j >= 0 && cows[j] >= cows[i]) {
                --j;
            }
            swap(cows, i, j);
        }
        reverse(cows, i + 1, n - 1);
        return cows;
    } 

    private void swap(final int[] a, final int i, final int j) {
        final int tmp = a[i];
        a[i] = a[j];
        a[j] = tmp;
    }

    private void reverse(final int[] a, int l, int r) {
        while (l < r) {
            swap(a, l++, r--);
        }
    }
}

全部评论

相关推荐

05-29 20:34
门头沟学院 C++
KarlAllen:得做好直接春招的准备。学历差的话,一是面试要求会比学历好的严格不少,二是就算面试通过了也会被排序。总之暑期和秋招对于学历差的就是及其不友好
点赞 评论 收藏
分享
认真搞学习:28小登的建议,投算法岗不要写什么物理竞赛,互联网+,多写点项目,用什么算法做了什么。还有本科算法是不可能的开发你这个也没有项目啊
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务