通过率 71% · 提交 51 · 通过 36
在魔法王国的滑雪比赛中,魔法学院开设了一个滑雪比赛系统,记录运动员的比赛成绩。滑雪比赛成绩根据时间来排序,时间越短表示成绩越好。每个运动员的成绩可以有多次记录。现需要实现一个滑雪排名系统,可以按以下方式操作: 功能要求 1. addRecord(int userId, int duration): - 添加运动员的滑雪成绩。 - 每个运动员的成绩可以添加多次,。 - `userId` 表示运动员的 ID,`duration` 表示这次滑雪的时间(单位:秒),成绩越低表示成绩越好。 - 系统会自动按成绩升序排序,只保留前 3 次最好成绩。 2. getTopAthletes(int num): - 获取滑雪成绩最快的 `num` 名运动员的 ID 数组,按成绩。成绩好(时间短)在前面。 - 如果有多个运动员成绩相同,。 - 如果运动员数量不足 `num`,则返回实际的运动员数量。 3. queryTop3Record(int userId): - 查询运动员 `userId` 的前 3 次最好成绩,按成绩升序返回。 - 如果该运动员的成绩少于 3 次,则按实际成绩返回。若没有成绩,返回 `[-1]`。 输入: 1. 第一行 输入一个整数 `Q`,表示接下来有 `Q` 次操作。 2. 接下来的 `Q` 行 每行包含一种操作,根据操作类型不同,后续输入的参数也不同。 - 操作 `SkiRankingSystem`: - 该命令用于初始化滑雪排名系统,后续不会有额外输入。 - 输出 `null`,表示系统已成功初始化。 - 操作 `addRecord`: - 用于添加运动员的滑雪成绩。后续输入包含两个整数: - `userId`:运动员的 ID,表示该运动员的身份。 - `duration`:滑雪成绩,单位为秒。成绩越小,表示成绩越好。 - 输出 `null`,表示操作成功。 - 操作 `getTopAthletes`: - 用于查询成绩最快的前 `num` 名运动员的 ID,按成绩升序排列。后续输入包含一个整数: - `num`:需要返回的运动员数量。 - 输出一个整数数组,表示 `num` 名最快的运动员的 ID,按成绩升序排列。如果运动员数量不足 `num`,则返回实际的运动员数量。 - 操作 `queryTop3Record`: - 用于查询运动员 `userId` 的前 3 次最好成绩,按成绩升序返回。后续输入包含一个整数: - `userId`:运动员的 ID。 - 输出一个整数数组,表示该运动员的前 3 次最好成绩,按成绩升序排列。如果成绩少于 3 次,则按实际成绩返回;若没有成绩,返回 `[-1]`。 输出: 1. 操作 `SkiRankingSystem`: - 当初始化系统时,不需要返回任何数据,只需输出一个 `null` 表示初始化成功。 输出: - `null` 2. 操作 `addRecord`: - 每次成功添加运动员的成绩时,操作会成功完成,输出 `null` 表示成功添加成绩。 输出: - `null` 3. 操作 `getTopAthletes`: - 查询最好的 `num` 名运动员时,返回一个 整数数组,表示排名前 `num` 名的运动员的 ID,按成绩升序排列(成绩更低表示更好)。 - 如果运动员数量不足 `num`,则返回实际数量的运动员 ID。 输出: - 一行包含若干整数,表示 `num` 名运动员的 ID,按成绩升序排列。 4. 操作 `queryTop3Record`: - 查询运动员 `userId` 的前 3 次最好成绩时,返回一个 整数数组,表示该运动员的前 3 次最好成绩,按成绩升序排列。 - 如果成绩少于 3 次,则按实际成绩返回;若没有成绩,返回 `[-1]`。 输出: - 一行包含若干整数,表示该运动员的前 3 次最好成绩,按成绩升序排列。
这类题属于华为可信认证科目一方向中「可信 / 系统设计」方向的高频题型,通常考察对「可信 / 系统设计」的建模能力与边界条件处理。掌握本题的解题思路后,可举一反三应对同类真题方向,稳步提升机考通过率。
提示:带虚线的词点一下有通俗解释。
第一行 输入一个整数 Q,表示接下来有 Q 次操作。
接下来的 Q 行 每行包含一种操作,根据操作类型不同,后续输入的参数也不同。
操作 SkiRankingSystem:
null,表示系统已成功初始化。操作 addRecord:
userId:运动员的 ID,表示该运动员的身份。duration:滑雪成绩,单位为秒。成绩越小,表示成绩越好。null,表示操作成功。操作 getTopAthletes:
num 名运动员的 ID,按成绩升序排列。后续输入包含一个整数:
num:需要返回的运动员数量。num 名最快的运动员的 ID,按成绩升序排列。如果运动员数量不足 num,则返回实际的运动员数量。操作 queryTop3Record:
userId:需要查询的运动员的 ID。[-1]。操作 SkiRankingSystem:
null 表示初始化成功。输出:
null操作 addRecord:
null 表示成功添加成绩。输出:
null操作 getTopAthletes:
num 名运动员时,返回一个 整数数组,表示排名前 num 名的运动员的 ID,按成绩升序排列(成绩更低表示更好)。num,则返回实际数量的运动员 ID。输出:
num 名运动员的 ID,按成绩升序排列。操作 queryTop3Record:
[-1]。输出:
示例 1
输入示例
11 SkiRankingSystem addRecord 1 30 addRecord 1 25 addRecord 2 20 addRecord 3 30 addRecord 2 15 addRecord 1 35 addRecord 1 15 getTopAthletes 3 queryTop3Record 1 queryTop3Record 2
输出示例
null null null null null null null null 2 1 3 15 25 30 15 20
SkiRankingSystem:初始化系统时输出 null。addRecord:每次添加成绩时,输出 null 表示成绩添加成功。getTopAthletes 3:查询最好的 3 名运动员的 ID,输出 2 1 3。这表示运动员 2(成绩 15 秒)、运动员 1(成绩 15 秒)和运动员 3(成绩 30 秒)是排名前三的运动员。queryTop3Record 1:查询运动员 1 的前 3 次最好成绩,输出 15 25 30。queryTop3Record 2:查询运动员 2 的前 3 次最好成绩,输出 15 20(因为运动员 2 只有 2 次成绩)。时间限制 1000 ms · 内存限制 128 MB
本平台为独立第三方培训机构,与华为技术有限公司无任何关联;课程的服务内容与权益以购买协议为准,学习效果因个人情况而异。「华为 OD」「华为可信」等仅为对岗位与考试方向的客观描述,相关商标归各自权利人所有。
登录后可查看你在本题的历史提交,以及每次的各用例通过情况。
© 2026 广州慕课网络科技有限公司 · 吴师兄学算法官网 版权所有