解题思路
这题本质上是一个按时间轴模拟 + 分类统计的问题。
一天只有 1440 分钟,而三挡电价的规则是按“当天从 0:00 开始”来划分的,因此最直接且最稳妥的做法就是:
- 先把输入的开关机时间转成分钟。
- 把一天中的每一分钟都看成一个单位,按规则预处理它属于哪一档。
- 再统计设备开机区间 [start,end) 内,每一分钟分别落在哪一档。
题目内容
电力公司的电费根据用电的时间,采用三挡计费:
第一档:用电时间在每天的12:00-13:30和17:30-18:00
第二档:每天从0:00起的,且不在第一档时段内的,累积的10小时
第三档:其他时段
某设备每天开关机一次(0:00之前必然关机)。统计这台设备每天各个时段的开机时长,用分钟表示。
时间格式:HH:MM,24小时制
说明:小时不足两位不补零,分钟严格保持两位。例如:8:08
输入描述
"HH:MM HH:MM",两个时间分别为设备开机时间、设备关机时间,中间空格间隔。例如:"8:00 23:30"。
约束:
- 结束时间不超过0:00(最大为23:59),即不考虑跨天的情况。
- 如果开机时间跟关机时间相等,则认为是开机0分钟。例如:"8:00 8:00"
输出描述
整数数组,依次为第一、二、三档的时长,单位:分钟。例如:[120,600,210]
样例1
输入
"8:00 23:30"
输出
[120,600,210]
说明
- 第一档:12:00-13:30、17:30-18:00,共120分钟
- 第二档:8:00-12:00、13:30-17:30、18:00-20:00,共600分钟,达到10小时上限。其余的时间要归到第三档
- 第三档:20:00-23:30,共210分钟
样例2
输入
"13:00 17:45"
输出
[45,240,0]
说明
- 第一档:13:00-13:30、17:30-17:45,共45分钟
- 第二档:13:30-17:30,共240分钟
- 第三档:由于第二档还没达到10小时,第三档时间为0