題目描述
給定乙個 24 小時制(小時:分鐘 「hh:mm」)的時間列表,找出列表中任意兩個時間的最小時間差並以分鐘數表示。
示例 1:
輸入:timepoints = [「23:59」,「00:00」]
輸出:1
示例 2:
輸入:timepoints = [「00:00」,「23:59」,「00:00」]
輸出:0
解題思路
本題主要分為三部分進行計算,第一步去重列表(目的減少運算量),第二獲得每一時間點的分鐘值(最大為24*60=1440,相對而言較小,且結果需要的為具體分鐘差值,方便計算),第三判斷原列表中是否存在相同時間點,若存在則直接返回0,否則以此計算兩個相鄰時刻的差值(已排序,相鄰差值即為候選(可能的)最小差值),最後需要單獨計算第乙個時間和最後乙個時間的時間差,通過依次判斷最小值即可獲得結果。(此**第三步,兩部分同時進行並不影響,因為只要判斷去重後的n個數是否有重複值即可,而min值的尋找計算也執行n次,所以即使去重後僅最大數值為重複,依舊可以返回0,反之則無任何影響)
源**
class
solution
:def
findmindifference
(self, timepoints: list[
str])-
>
int:
time=
list
(set
(timepoints)
) l=
len(time)
t=[0
for x in
range
(l)]
mins=
0for i in
range
(l):
t[i]
=int
(time[i][:
2])*
60+int(time[i][3
:]) t.sort(
)for i in
range
(l):
if timepoints.count(time[i]
)>=2:
return
0else
:if i==1:
mins=t[i]
-t[i-1]
elif i>1:
if mins>t[i]
-t[i-1]
: mins=t[i]
-t[i-1]
if mins>24*
60-t[l-1]
+t[0]:
mins=24*
60-t[l-1]
+t[0
]return mins
Leetcode 539 最小時間差 C
給定乙個 24 小時制 小時 分鐘 的時間列表,找出列表中任意兩個時間的最小時間差並已分鐘數表示。示例 1 輸入 23 59 00 00 輸出 1 備註 列表中時間數在 2 20000 之間。每個時間取值在 00 00 23 59 之間。這裡需要注意乙個問題,那就是兩個時間點的時間差有兩中可能。一種...
539 最小時間差
給定乙個 24 小時制 小時 分鐘 hh mm 的時間列表,找出列表中任意兩個時間的最小時間差並以分鐘數表示。鴿巢原理優化 資料規模大於24 60 1440時,直接返回0 import j a.util.collections import j a.util.list class solution ...
leetcode訪問所有點的最小時間 1266
平面上有 n 個點,點的位置用整數座標表示 points i xi,yi 請你計算訪問所有這些點需要的最小時間 以秒為單位 你可以按照下面的規則在平面上移動 每一秒沿水平或者豎直方向移動乙個單位長度,或者跨過對角線 可以看作在一秒內向水平和豎直方向各移動乙個單位長度 必須按照陣列 現的順序來訪問這些...