1. 程式人生 > >Python解Leetcode: 539. Minimum Time Difference

Python解Leetcode: 539. Minimum Time Difference

mini epo findmi range min logs 但是 urn obj

  • 題目描述:給定一個由時間字符組成的列表,找出任意兩個時間之間最小的差值。

  • 思路:
  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