京东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

相关推荐

zhiyog:哈哈哈哈哈哈哈哈哈哈哈哈哈
点赞 评论 收藏
分享
06-07 17:17
嘉兴学院 教师
心爱的idea:你孩
点赞 评论 收藏
分享
程序员小白条:找的太晚,别人都是大三实习,然后大四秋招春招的,你大四下了才去实习,晚1年
点赞 评论 收藏
分享
评论
6
27
分享

创作者周榜

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