8.30华为OD机试真题 新系统 – 快递驿站计费系统(JavaPyCC++JsGo)
2026 华为OD机试真题8月30日华为OD上机新系统考试真题 100 分题型
点击查看华为 OD 机试真题完整目录:2026最新华为OD机试新系统卷 + 双机位C卷 真题题库目录|全覆盖题库 + 逐点算法考点详解
题目描述
请开发一个快递驿站计费系统,根据给定的一组快递存取记录,系统计费每位业主要缴纳的总费用,并按总费用从高到低输出。
系统计费规则如下:
- 免费存放时间为
12小时,从存件时间开始计时,总存放时间 ⩽12 小时不收费,存放时间 = 取件时间 − 存件时间; - 超出免费存放时间的,每
12小时收取1元,不足12小时按12小时计算,比如存放了25个小时,超出免费时间13小时,需要收费2元; - 同一个房间号的业主,可能有多条存取记录,需要将业主所有快递的超时费用累加得到总费用。
2026 华为OD机试真题8月30日华为OD上机新系统考试真题 100 分题型
输入描述
一组快递存取记录列表,其中一条存取记录对应一个数组,该数组包含 3 个非负整数字段:存件时间、取件时间和业主房间号;存取时间已简化处理采用整型数字,非 24 小时制格式;
- 0⩽ 存件时间 ⩽ 取件时间 ⩽100000;
- 100< 房间号 <10000;
- 输入记录条数的范围:1⩽N⩽1000
输出描述
一个二维数组/列表,表述一组收费记录,每一条收费记录对应一个数组,该数组包含 2 个整数字段:业主房间号和总费用;收费按总费用从高到低排序,总费用相同的,按房间号从小到大排序;
示例1
输入
[[100, 110, 1111], [200, 210, 2222], [150, 165, 3333], [180, 190, 1111]]
输出
[[3333,1],[1111,0],[2222,0]]
说明
3333房间的业主的快递存件时间是150,取件时间是165,则总存放时间为15小时,超过免费时间3小时,需要收取1元;其余业主都在免费时间内,不需要收费,按房间号从小到大排序,因此1111号排在前面
示例2
输入
[[10, 30, 303], [25, 50, 303], [40, 70, 201], [60, 90, 201], [100, 130, 102], [150, 180, 102]]
输出
[[102,4],[201,4],[303,3]]
说明
102有2单,存放时间都是30小时,超时18小时,每单 18/12 向上取整收取2元,总费用4元;201业主的总费用也是4元,但是 102<201,所以102号排在前面
解题思路
核心思想
每条记录只需要算出这一单的超时费用,再按房间号汇总即可。
单次费用的规则很直接:先算存放时长 dur = 取件时间 - 存件时间,dur <= 12 时不收费;否则超出的部分按每 12 小时 1 元向上取整。
算法步骤
- 逐条读取记录,得到存件时间、取件时间和房间号。
- 计算该单的超时费用。
- 用哈希表按房间号累计总费用。
- 将所有房间整理成二维数组。
- 按总费用降序、房间号升序排序后输出。
复杂度分析
设记录条数为 N。
- 时间复杂度:
O(N log N),主要来自最终排序。 - 空间复杂度:
O(N),用于哈希表和结
版权声明:
作者:魔改工程师
链接:https://www.sylblog.xin/archives/865
文章版权归作者所有,未经允许请勿转载。
THE END