Minimum Time Difference

来源:互联网 发布:阿里云怎么禁止ip访问 编辑:程序博客网 时间:2024/05/16 15:53

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
0 0
原创粉丝点击