华为OD机试真题 Java 实现【拔河比赛】【2023 B卷 100分】,附详细解题思路-LMLPHP

专栏导读

本专栏收录于《华为OD机试(JAVA)真题(A卷+B卷)》

刷的越多,抽中的概率越大,每一题都有详细的答题思路、详细的代码注释、样例测试,订阅后,专栏内的文章都可看,可加入华为OD刷题群(私信即可),发现新题目,随时更新,全天CSDN在线答疑。

  • 专栏福利:限时订阅49.9,订阅后可加入华为OD刷题群,获得哪吒优先答疑机会(华为OD刷题指导,远程代码调试),群里大佬众多可以抱团取暖,群友刷题经验分享,考试经验分享。

华为OD机试真题 Java 实现【拔河比赛】【2023 B卷 100分】,附详细解题思路-LMLPHP

一、题目描述

公司最近准备进行拔河比赛,需要在全部员工中进行挑选。

选拔的规则如下:

  1. 按照身高优先、体重次之的方式准备比赛阵容
  2. 规定参赛的队伍派出10名选手

请实现一个选拔队员的小程序。

输入为一个数组,记录了部门人员的身高、体重信息,如身高,体重信息,如身高

要求输出一个数量为10的二维数组。

备注:

成员身高和体重为int数据类型,输入成员数量10 < N <100。

二、输入描述

第一行输入全部员工数量N
第二行输入每名员工的身高和体重,空格分开

三、输出描述

要求输出一个10行的已经排序的参赛员工信息数据,每行两个数字,空格分隔,表示员工的身高和体重。

四、解题思路

  1. 输入全部员工数量;
  2. 输入每名员工的身高和体重,空格分开;
  3. 按照身高优先、体重次之的方式,自定义排序;
  4. 取出TOP10;

五、Java算法源码

public static void main(String[] args) {
    Scanner sc = new Scanner(System.in);
    // 全部员工数量
    int N = Integer.valueOf(sc.nextLine());
    // 全部员工
    List<Player> list = new ArrayList<>();
    for (int i = 0; i < N; i++) {
        int[] arr = Arrays.stream(sc.nextLine().split(" ")).mapToInt(Integer::parseInt).toArray();
        list.add(new Player(arr));
    }

    // 自定义排序
    list.sort((h, w) -> h.height != w.height ? w.height - h.height : w.weight - h.weight);

    // 输出前十
    for (int i = 0; i < 10; i++) {
        System.out.println(list.get(i).height + " " +list.get(i).weight);
    }
}

/**
 * 员工
 */
static class Player {
    // 身高
    private int height;
    // 体重
    private int weight;

    public Player(int[] arr) {
        this.height = arr[0];
        this.weight = arr[1];
    }
}

六、效果展示

1、输入

16
180 70
170 60
162 71
162 75
180 62
170 80
175 75
182 77
177 85
177 95
170 83
180 59
166 57
169 80
158 77
182 77

2、输出

182 77
182 77
180 70
180 62
180 59
177 95
177 85
175 75
170 83
170 80

3、说明

很简单,肉眼可见。


🏆下一篇:华为OD机试真题 Java 实现【路灯照明问题】【2022Q4 100分】,感谢fly晨发现这个问题,并提供更优质的算法

🏆本文收录于,华为OD机试(JAVA)真题(A卷+B卷)

刷的越多,抽中的概率越大,每一题都有详细的答题思路、详细的代码注释、样例测试,订阅后,专栏内的文章都可看,可加入华为OD刷题群(私信即可),发现新题目,随时更新,全天CSDN在线答疑。

华为OD机试真题 Java 实现【拔河比赛】【2023 B卷 100分】,附详细解题思路-LMLPHP

07-18 02:22