题目

给定一个 24 小时制(小时:分钟)的时间列表,找出列表中任意两个时间的最小时间差并以分钟数表示。

  • 示例 1:

    输入: [“23:59”,”00:00”]
    输出: 1

  • 备注:

    1. 列表中时间数在 2~20000 之间。
    2. 每个时间取值在 00:00~23:59 之间。

解法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
class Solution:
def findMinDifference(self, timePoints: List[str]) -> int:
# 依次计算每个时间值到零点的分钟差
time_list = []
for timePoint in timePoints:
h, s = timePoint.split(':')
time_list.append(int(h)*60+int(s))

# 一天只有24小时,如果拥有大于24*60的时间比较,则必定有重复的时间
if len(time_list) >= 60*24:
return 0

# 将时间排序,依次计算两两时间差
time_list.sort()
min_detail = 12 * 60
for idx in range(len(time_list)-1):
detail = time_list[idx+1] - time_list[idx]
if detail < min_detail:
min_detail = detail

# 需要额外考虑一头一尾的时间差
return min(time_list[0]+24*60-time_list[-1], min_detail)

执行结果