Minimum Time Difference

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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值