京东8.24Java开发笔试

第一题合唱队,首先复制一个身高数组copyH,把复制数组排序得到每个身高所处的正确的位置。之后从左往右遍历输入的数组h,记录遇到的最大值gMax,当gMax == copyH[i]时,我们得到一个分组。


···

package jd;

import java.util.Arrays;
import java.util.Scanner;

public class E1 {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        while(in.hasNext()) {
            int n = in.nextInt();
            int[] h = new int[n];
            int[] copyH = new int[n];
            for(int i = 0; i < n; ++i) {
                h[i] = in.nextInt();
                copyH[i] = h[i];
            }
            Arrays.sort(copyH);
            System.out.println(maxGroups(h, copyH));
        }
    }

    private static int maxGroups(int[] h, int[] copyH) {
        int cnt = 0;
        int gMax = Integer.MIN_VALUE;
        for(int i = 0; i < h.length; ++i) {
            gMax = Math.max(gMax, h[i]);
            if(gMax == copyH[i]) ++cnt;
        }
        return cnt;
    }
}
#京东##内推##Java工程师##笔试题目##题解#
全部评论
厉害 当前最大值就在他应该在的位置 就+1 哎我怎么没想到呢 我真是菜
点赞 回复
分享
发布于 2019-08-24 21:12
全过了??
点赞 回复
分享
发布于 2019-08-24 21:13
阅文集团
校招火热招聘中
官网直投
牛逼,膜拜大佬
点赞 回复
分享
发布于 2019-08-24 21:50
如果出现重复元素是不是就不可以这样了
点赞 回复
分享
发布于 2019-08-24 22:26
这种对于下面这个测试样例 7 8 1 3 8 9 4 8 是不是不行
点赞 回复
分享
发布于 2019-08-24 22:28
谢谢大佬分享
点赞 回复
分享
发布于 2019-08-24 22:45
为什么不用逆序列呢😄
点赞 回复
分享
发布于 2019-08-24 23:19
第一题思路好厉害。。我怎么就想不到。我真菜!!
点赞 回复
分享
发布于 2019-08-24 23:27

相关推荐

6 27 评论
分享
牛客网
牛客企业服务