Python解Leetcode: 539. Minimum Time Difference
阿新 • • 發佈:2017-12-03
mini epo findmi range min logs 但是 urn obj
題目描述:給定一個由時間字符組成的列表,找出任意兩個時間之間最小的差值。
- 思路:
- 把給定的鏈表排序,並且在排序的同時把60進制的時間轉化成十進制整數;
- 遍歷排序的數組,求出兩個相鄰值之間的差值;
- 求出首尾兩個值之間的差值。
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