计费时段计算
2026 华为OD机试真题 4月22日华为OD上机新系统考试真题 100 分题型
点击查看华为 OD 机试真题完整目录:2026最新华为OD机试新系统卷 + 双机位C卷 真题题库目录|全覆盖题库 + 逐点算法考点详解
题目描述
电力公司的电费根据用电的时间,采用三挡计费:
第一档:用电时间在每天的-和-
第二档:每天从起的,且不在第一档时段内的,累积的小时
第三档:其他时段
某设备每天开关机一次(之前必然关机)。统计这台设备每天各个时段的开机时长,用分钟表示。
时间格式:,小时制 说明:小时不足两位不补零,分钟严格保持两位。例如:
输入描述
" ",两个时间分别为设备开机时间、设备关机时间,中间空格间隔。例如:" "。
约束:
- 结束时间不超过(最大为),即不考虑跨天的情况。
- 如果开机时间跟关机时间相等,则认为是开机分钟。例如:" "
输出描述
整数数组,依次为第一、二、三档的时长,单位:分钟。例如:
示例1
输入
8:00 23:30
输出
[120,600,210]
说明
- 第一档:-、-,共分钟
- 第二档:-、-、-,共分钟,达到小时上限。其余的时间要归到第三档
- 第三档:-,共分钟
示例2
输入
13:00 17:45
输出
[45,240,0]
说明
- 第一档:-、-,共分钟
- 第二档:-,共分钟
- 第三档:由于第二档还没达到小时,第三档时间为
解题思路
核心思想
- 时间转换:将所有输入的时间格式(HH:MM)转换为从当天 开始的总分钟数,方便计算。
- 档位规则:
- 第一档:固定时段 -(- 分钟)和 -(- 分钟)。
- 第二档:非第一档时段内的开机时间,每天累积上限为 小时( 分钟)。
- 第三档:超过第二档上限后的所有其他开机时间。
- 模拟计算:从开机时间遍历到关机时间,每一分钟判断其属于哪一档:
- 如果当前分钟在第一档时段内,计入第一档。
- 如果不在第一档时段:
- 如果已计入第二档的时间未满 分钟,计入第二档。
- 否则,计入第三档。
- 输出结果:以数组形式输出三个档位的总时长。
复杂度分析
- 时间复杂度:,其中 是开关机之间的时间跨度(分钟)。由于一天最多只有 分钟,因此计算非常高效。
- 空间复杂度:,只需要常数级别的变量来存储各档位的时间。