码迷,mamicode.com
首页 > 编程语言 > 详细

Python解Leetcode: 539. Minimum Time Difference

时间:2017-12-03 13:59:53      阅读:202      评论:0      收藏:0      [点我收藏+]

标签:描述   last   ast   差值   nic   pythonic   ret   列表   log   

  • 题目描述:给定一个由时间字符组成的列表,找出任意两个时间之间最小的差值。

  • 思路:
  1. 把给定的链表排序,并且在排序的同时把60进制的时间转化成十进制整数;
  2. 遍历排序的数组,求出两个相邻值之间的差值;
  3. 求出首尾两个值之间的差值。
class Solution(object):
    def findMinDifference(self, timePoints):
        """
        :type timePoints: List[str]
        :rtype: int
        """
        t = sorted(int(t[:2]) * 60 + int(t[-2:]) for t in timePoints)
        ret = 100000
        length = len(t)
        for i in range(length - 1):
            poor = t[i+1] - t[i]
            if poor < ret:
                ret = poor
        last = t[-1] - t[0] if t[-1]-t[0] <= 720 else 1440 - (t[-1]-t[0])
        ret = last if last < ret else ret
        return ret   

以上解决办法思路没问题,但是代码写出来不是很优,发现有大神写的,充分利用了Python的zip,很Pythonic,如下:

class Solution(object):
    def findMinDifference(self, timePoints):
        """
        :type timePoints: List[str]
        :rtype: int
        """
        t = sorted(int(t[:2]) * 60 + int(t[-2:]) for t in timePoints)
        t.append(t[0] + 1440)
        return min(b - a for a, b in zip(t, t[1:]))

Python解Leetcode: 539. Minimum Time Difference

标签:描述   last   ast   差值   nic   pythonic   ret   列表   log   

原文地址:http://www.cnblogs.com/qiaojushuang/p/7965823.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!