【华为OD题库-066】冠亚军排名-java

题目

2012伦敦奥运会即将到来,大家都非常关注奖牌榜的情况,现在我们假设奖牌榜的排名规则如下.

1.首先gold medal数量多的排在前面

2.其次silver medal数量多的排在前面

3.然后bronze medal数量多的排在前面

4.若以上三个条件仍无法区分名次,则以国家名称的字典顺序排定

我们假设国家名称不超过二十个字符,各类奖牌数不超过100,且大于0
输入描述

第一行输入一个整数N(0<N<21),代表国家数量

然后接下来的N行,每行包含1个字符串Name,表示各个国家的名称和三个整数Gi.Si,Bi表示每个获得的gold medal.silver medal.bronze medal的数量,以空格隔开,如(China 51 2021)。

具体见样例输入。
输出描述

输出奖牌榜的依次顺序,只输出国家名称,各占一行,具体见样例输出

示例1:
输入

5

China 32 28 34

England 12 34 22

France 23 33 2

Japan 12 34 25

Rusia 23 43 0
输出

China

Rusia

France

Japan

England
说明

思路

自定义对象排序,送分题

题解

java 复制代码
package hwod;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Scanner;

public class CountrySort {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        sc.nextLine();
        List<CountryMedal> list = new ArrayList<>();
        for (int i = 0; i < n; i++) {
            String[] splits = sc.nextLine().split(" ");
            list.add(new CountryMedal(splits[0], Integer.parseInt(splits[1]), Integer.parseInt(splits[2]), Integer.parseInt(splits[3])));
        }
        Collections.sort(list);
        for (int i = 0; i < list.size(); i++) {
            System.out.println(list.get(i).getName());
        }
    }



}

class CountryMedal implements Comparable<CountryMedal> {
    private String name;
    private int gold;
    private int silver;
    private int bronze;

    public CountryMedal(String name, int gold, int silver, int bronze) {
        this.name = name;
        this.gold = gold;
        this.silver = silver;
        this.bronze = bronze;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    @Override
    public int compareTo(CountryMedal o) {
        if(this.gold!=o.gold) return o.gold - this.gold;
        if(this.silver!=o.silver) return o.silver - this.silver;
        if(this.bronze!=o.bronze) return o.bronze - this.bronze;
        return this.name.compareTo(o.name);
    }
}

推荐

如果你对本系列的其他题目感兴趣,可以参考华为OD机试真题及题解(JAVA),查看当前专栏更新的所有题目。

相关推荐
nbsaas-boot10 分钟前
SaaS 租户上下文传播架构
java·架构·saas
西岭千秋雪_34 分钟前
Zookeeper监听机制
java·linux·服务器·spring·zookeeper
毕设源码-林学长38 分钟前
计算机毕业设计java和Vue的安全教育科普平台设计与实现 安全知识普及与教育平台 安全教育信息化管理平台
java·开发语言·课程设计
ruleslol42 分钟前
java-接口适配器模式 & jsk8 接口默认实现
java·适配器模式
鬼火儿1 小时前
网卡驱动架构以及源码分析
java·后端
老华带你飞1 小时前
房屋租赁|房屋出租|房屋租赁系统|基于Springboot的房屋租赁系统设计与实现(源码+数据库+文档)
java·数据库·spring boot·vue·论文·毕设·房屋租赁系统
TDengine (老段)1 小时前
TDengine 数学函数 ASCII 用户手册
java·大数据·数据库·物联网·时序数据库·tdengine·涛思数据
123461611 小时前
互联网大厂Java面试:从Spring Boot到微服务的探索
java·数据库·spring boot·微服务·面试·mybatis·orm
光仔December1 小时前
【Elasticsearch入门到落地】18、Elasticsearch实战:Java API详解高亮、排序与分页
java·elasticsearch·es排序·es分页·es高亮
码上零乱1 小时前
跟着小码学算法Day19:路径总和
java·数据结构·算法