解题思路
把每个 XX:XX 时刻换成从当天 00:00 起经过的分钟数:若小时为 h、分钟为 m,则对应值为 h×60+m。当前时刻同样换算成分钟数 t。
将所有发车时刻按分钟数升序排序后,找到第一个严格大于 t 的时刻即可。由于保证当天内一定还有未发出的班次,这个位置一定存在,不必考虑跨日。
也可以不排序,直接扫描所有班次,在大于 t 的时刻中取分钟数最小者。
复杂度分析
题目内容
车站电子屏上显示着当前时刻,格式为 XX:XX:由两位小时、字符 : 与两位分钟依次组成,且一定落在 00:00 到 23:59 之间。
当天还有 n 趟列车即将发出,每趟的发车时刻同样以 XX:XX 给出。你需要找出严格晚于当前时刻、且时间最早的那一趟发车时刻。保证在当天之内一定还存在尚未发出的班次(不必考虑跨日)。
约束:班次数量不超过 100。
输入描述
第一行一个字符串,表示当前时刻,格式为 XX:XX。
第二行一个正整数 n,表示发车时刻的个数。
接下来 n 行,每行一个字符串,表示一趟列车的发车时刻,格式均为 XX:XX。
保证 1≤n≤100,所有时刻均在 00:00 到 23:59 之间,且当天内一定存在严格晚于当前时刻的班次。
输出描述
输出一个 XX:XX 格式的时刻,表示下一趟发车时间。
样例1
输入
10:30
3
09:00
11:15
22:00
输出
11:15
说明
当前时刻为 10:30。三趟发车中 09:00 已过,尚未发出的是 11:15 与 22:00。
最早的下一班是 11:15。
样例2
输入
00:01
2
00:02
23:00
输出
00:02
说明
当前刚过午夜 00:01。两趟发车都尚未发出,其中更早的是 00:02。
样例3
输入
23:00
2
00:00
23:59
输出
23:59
说明
00:00 早于当前的 23:00,不能作为当天的下一班。
唯一晚于当前时刻的是 23:59。