LeetCode練習問題解析-Minimum Time Difference
1305 ワード
Kindemのブログから
に質問
The number of time points in the given list is at least 2 and won't exceed 20000. The input time is legal and ranges from 00:00 to 23:59.
は、最初に与えられたすべての時間を分数 に変換する.
次いで、から変換後の分数容器は、小さい順に に並べ替えられる.隣接間の時間の分数差(最小は隣接するに違いないが、遠くに離れることは不可能であり、計算量を大幅に減らすことができる) を計算する.最後に1回の頭と尾の分数差を計算する、すなわち頭分数に24 x 60分を加えて尾分数 を減算する.最小値 を保持
時間的複雑さ:O(n),以下にコードを示す
に質問
Given a list of 24-hour clock time points in "Hour:Minutes"format, find the minimum minutes difference between any two time points in the list.
Example 1: Input: ["23:59","00:00"]
Output: 1
Note:
Input: ["23:59","00:00"]
Output: 1
私のやり方
次いで、
時間的複雑さ:O(n),以下にコードを示す
class Solution:
def findMinDifference(self, timePoints):
"""
:type timePoints: List[str]
:rtype: int
"""
minutes = [int(time[0:2]) * 60 + int(time[3:5]) for time in timePoints]
minutes.sort()
ans = 24 * 60
for i in range(0, len(minutes) - 1):
tmp = minutes[i + 1] - minutes[i]
if tmp < ans:
ans = tmp
tmp = minutes[0] + 24 * 60 - minutes[-1]
if tmp < ans:
ans = tmp
return ans