仅以此纪录每日LeetCode所刷题目
题目描述:
示例:
思路:
做这道题之前我们要知道一件事情,一天中有1440分钟,因此timesPoints列表中不同的值最多有1440种。由此可见,列表中很多的值可能是重复的。我们可以使用哈希表,如果列表中有重复的值,也就是某个key对应的value大于1时,我们可以直接返回0。当排除掉这种情况的时候,列表的最大长度也就不会超过1440,因此我们也就不用担心超时的问题了,我们将时间换算成分钟,将小时*60+分钟即可。还需要注意的一点是,1440和0其实是一个时间,所以这个间隔要注意一下。最后即可得出答案。
代码:
class Solution:
def findMinDifference(self, timePoints: List[str]) -> int:
list1 = []
list2 = []
dicts = {}
for i in timePoints:
if i in dicts:
dicts[i] += 1
else:
dicts[i] = 1
for i in dicts.values():
if i > 1:
return 0
for i in dicts.keys():
list1.append(int(i[:2])*60+int(i[3:]))
list1 = sorted(list1)
for i in range(1,len(list1)):
list2.append(list1[i] - list1[i-1])
list2.append(1440-list1[-1]+list1[0])
list2 = sorted(list2)
return list2[0]