LeetCode539 最小時間差

2021-10-10 05:59:07 字數 1435 閱讀 2680

題目描述

給定乙個 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 請你計算訪問所有這些點需要的最小時間 以秒為單位 你可以按照下面的規則在平面上移動 每一秒沿水平或者豎直方向移動乙個單位長度,或者跨過對角線 可以看作在一秒內向水平和豎直方向各移動乙個單位長度 必須按照陣列 現的順序來訪問這些...