leetcode第539题,竞赛题,要求求给定24小时制时间列表中两个最近的时间间隔。
这道题首先要解决的就是把字符串表示的时间转化为分钟数,这样才好计算。
其次,如何才能计算两个最近的时间间隔,这里我们可以把分钟数排个序,然后依次遍历,只需要计算相邻时间点的距离,依次与当前最小值比较就可以了,因为排序后,最小间隔只可能出现在相邻时间点上。
但是时钟问题有个很大的麻烦,就是循环问题,比如23:59和00:00,只差了一分钟,但是按照上述计算,则差了1439分钟,这显然是不对的。原因在于,00:00不在属于今天的时间了,而是下一天的开始,为了简便起见,可以这样处理,每次计算时间,都加上24小时,一并加入列表,这样就可以把第二天的时间也考虑到,遍历的时候自然也就能找出最小的了。
class Solution(object):
def findMinDifference(self, timePoints):
"""
:type timePoints: List[str]
:rtype: int
"""
minList = []
for time in timePoints:
minute = int(time[:2])*60+int(time[3:])
minute2 = minute+24*60
minList.append(minute)
minList.append(minute2)
print minList
minList.sort()
diff = 1441
for i in range(1, len(minList)):
diff = min(diff, minList[i]-minList[i-1])
return diff