京东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工程师##笔试题目##题解#
全部评论
第一题思路好厉害。。我怎么就想不到。我真菜!!
点赞 回复 分享
发布于 2019-08-24 23:27
为什么不用逆序列呢😄
点赞 回复 分享
发布于 2019-08-24 23:19
谢谢大佬分享
点赞 回复 分享
发布于 2019-08-24 22:45
这种对于下面这个测试样例 7 8 1 3 8 9 4 8 是不是不行
点赞 回复 分享
发布于 2019-08-24 22:28
如果出现重复元素是不是就不可以这样了
点赞 回复 分享
发布于 2019-08-24 22:26
牛逼,膜拜大佬
点赞 回复 分享
发布于 2019-08-24 21:50
全过了??
点赞 回复 分享
发布于 2019-08-24 21:13
厉害 当前最大值就在他应该在的位置 就+1 哎我怎么没想到呢 我真是菜
点赞 回复 分享
发布于 2019-08-24 21:12

相关推荐

程序员牛肉:主要是因为小厂的资金本来就很吃紧,所以更喜欢有实习经历的同学。来了就能上手。 而大厂因为钱多,实习生一天三四百的就不算事。所以愿意培养你,在面试的时候也就不在乎你有没有实习(除非是同级别大厂的实习。) 按照你的简历来看,同质化太严重了。项目也很烂大街。 要么换项目,要么考研。 你现在选择工作的话,前景不是很好了。
点赞 评论 收藏
分享
05-29 09:02
门头沟学院 Java
点赞 评论 收藏
分享
评论
6
27
分享

创作者周榜

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