LeetCode题解(0539):最小时间差(Python)
发布日期:2021-06-29 19:57:57
浏览次数:2
分类:技术文章
本文共 1231 字,大约阅读时间需要 4 分钟。
题目:(中等)
标签:字符串
解法 | 时间复杂度 | 空间复杂度 | 执行用时 |
---|---|---|---|
Ans 1 (Python) | O ( N l o g N ) O(NlogN) O(NlogN) | O ( N ) O(N) O(N) | 92ms (59.70%) |
Ans 2 (Python) | O ( N l o g N ) O(NlogN) O(NlogN) | O ( N ) O(N) O(N) | 68ms (98.48%) |
Ans 3 (Python) |
LeetCode的Python执行用时随缘,只要时间复杂度没有明显差异,执行用时一般都在同一个量级,仅作参考意义。
解法一(排序法):
class Solution: def findMinDifference(self, timePoints: List[str]) -> int: # 生成用分钟表示的时间 lst = [] for time in timePoints: hour, minute = time.split(":") lst.append(int(hour) * 60 + int(minute)) # 排序时间列表 lst.sort() # 计算最小时间差 ans = lst[0] + 1440 - lst[-1] # 首尾相差一天的最小值 for i in range(len(lst) - 1): ans = min(ans, lst[i + 1] - lst[i]) return ans
解法二(优化解法一):
不再使用“:”分隔小时、分钟而直接使用切片器分隔
使用集合直接处理重复值
class Solution: def findMinDifference(self, timePoints: List[str]) -> int: # 生成用分钟表示的时间 lst = set() for time in timePoints: minute = int(time[:2]) * 60 + int(time[3:]) if minute in lst: return 0 lst.add(minute) # 排序时间列表 lst = sorted(lst) # 考虑跨午夜的情况 lst.append(lst[0] + 1440) # 计算最小时间差 return min(lst[i + 1] - lst[i] for i in range(len(lst) - 1))
转载地址:https://dataartist.blog.csdn.net/article/details/108009706 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
初次前来,多多关照!
[***.217.46.12]2024年04月25日 17时02分15秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
计算机专业推荐书籍
2019-04-30
程序员的成长之路
2019-04-30
linux下CPU温度监测
2019-04-30
java数组查找元素索引,无需排序
2019-04-30
QT 多线程程序设计
2019-04-30
Qt 4.8.4 & Qt Creator 2.6.1 安装和配置(Windows)
2019-04-30
Qt使用自定义类型信号槽注册问题
2019-04-30
mysql远程数据库打开很慢的问题
2019-04-30
Anroid Studio工具UI设计默认切换焦点顺序原则
2019-04-30
Qt数据库操作 连接SQLite和MySQL数据库实例
2019-04-30
Qt关于mysql数据库断开重连的问题
2019-04-30
修改root登录用户名减少阿里云Linux主机“被暴力破解”警告
2019-04-30
linux下RPM工具的使用
2019-04-30
QTableWidget常用使用总结(转)
2019-04-30
dynamic_cast
2019-04-30
如何将QT应用程序打包发布
2019-04-30
Qt在Windows数据库的连接
2019-04-30
Qt远程连接MySql数据库
2019-04-30
Windows下Qt的MYSQL数据库开发步骤
2019-04-30
QtCreator中常用快捷键总结
2019-04-30