一、题目解析
1. 问题描述
小C点了一个外卖,并且急切地等待着骑手的送达。她想知道她的外卖是否超时了。
已知小C在时刻 t1 点了外卖,外卖平台上显示的预计送达时间为 t2,而实际送达时间为 t3。需要判断外卖是否超时。如果外卖超时,则输出"Yes";否则输出"No"。
t3 在 t2 之后则认定为超时。
实际送达时间与预计送达时间在 2 小时之内。
测试样例
样例1:
输入:
t1="18:00",t2="19:05",t3 ="19:05"
输出:"No"
样例2:
输入:
t1="23:00",t2=“00:21",t3 ="00:23"
输出:"Yes"
样例3:
输入:
t1="23:05",t2="00:05",t3 ="23:58"
输出:"No"
2. 题目解析
思路:
在本题中,我们需要比较三个时间 t1、t2 和 t3。其中,t1 是订单时间,t2 是预计送达时间,而 t3 是实际送达时间。如果 t3 超过 t2,则认为外卖超时,需要输出 "Yes";否则输出 "No"。此外,t2 和 t3 可能是次日的时间,需要特别处理。
图解:
假设时间以一天 1440 分钟来表示,以此来做跨天判断和处理。例如:
t1="23:05",t2="00:05",t3="23:58"。- 在该例子中,
t2实际发生在次日 0:05,我们将其转换为分钟数后加上 24 小时的分钟数(1440 分钟),使得它在同一时间线上。
3. 代码详解
def solution(t1: str, t2: str, t3: str) -> str:
# 将时间转换为分钟数
def time_to_minutes(time: str) -> int:
hours, minutes = map(int, time.split(":"))
return hours * 60 + minutes
# 转换输入的时间
t1_minutes = time_to_minutes(t1)
t2_minutes = time_to_minutes(t2)
t3_minutes = time_to_minutes(t3)
# 判断 t2 是否跨天,如果 t2 比 t1 小,说明 t2 是次日
if t2_minutes < t1_minutes:
t2_minutes += 24 * 60 # 跨天处理,将 t2 加 24 小时
# 判断 t3 是否跨天,如果 t3 比 t1 小,说明 t3 是次日
if t3_minutes < t1_minutes:
t3_minutes += 24 * 60 # 跨天处理,将 t3 加 24 小时
# 判断是否超时
if t3_minutes > t2_minutes:
return "Yes"
else:
return "No"
4. 时间和空间复杂度分析
-
时间复杂度:,因为时间转换和比较的操作是固定次数的计算。
-
空间复杂度:,只需常量级的空间存储转换后的时间值。
二、知识总结
新知识点:
- 时间处理技巧:通过将时间转换为分钟数,能简单地处理跨天问题。
- 跨天时间判断:尤其在涉及到次日的情况下,通过增加一天的总分钟数来处理,是简化逻辑的有效方式。
个人理解与学习建议:
建议入门同学多练习带有跨天处理的时间题,这类题目能帮助熟悉基本的时间处理和逻辑转换技巧。
三、学习计划
- 制定刷题计划:每天按主题进行题型分类,例如时间处理、字符串操作等。
- 错题复盘:对每次刷题的错题进行记录和分析,找出问题点并重新练习。
- 分阶段巩固:刷题时从简单到难,每天按计划进行一定量的复习和练习。
四、工具运用
AI 刷题功能与其他学习资源的结合
在学习和刷题过程中,可以结合 AI 工具与其他资源,如 豆包MarsCode AI等平台。
使用 AI 工具进行解题思路分析和代码验证,尤其在遇到复杂逻辑时,可以让 AI 提供参考答案和提示。此外,结合在线算法资源和错题本,有效分析和巩固常见错误的题型。