计算列车到站时间

标签: 数学

难度: Easy

给你一个正整数 arrivalTime 表示列车正点到站的时间(单位:小时),另给你一个正整数 delayedTime 表示列车延误的小时数。

返回列车实际到站的时间。

注意,该问题中的时间采用 24 小时制。

示例 1:

输入:arrivalTime = 15, delayedTime = 5 
输出:20 
解释:列车正点到站时间是 15:00 ,延误 5 小时,所以列车实际到站的时间是 15 + 5 = 20(20:00)。

示例 2:

输入:arrivalTime = 13, delayedTime = 11
输出:0
解释:列车正点到站时间是 13:00 ,延误 11 小时,所以列车实际到站的时间是 13 + 11 = 24(在 24 小时制中表示为 00:00 ,所以返回 0)。

提示:

  • 1 <= arrivaltime < 24
  • 1 <= delayedTime <= 24

Submission

运行时间: 16 ms

内存: 16.0 MB

class Solution:
    def findDelayedArrivalTime(self, arrivalTime: int, delayedTime: int) -> int:
        return (arrivalTime+delayedTime)%24

Explain

该题目要求计算列车实际到站的时间,考虑到24小时制的时间循环特性。通过直接将到站时间与延误时间相加,然后使用模24操作来处理时间超过24小时的情况,可以确保结果始终在0到23小时之间。

时间复杂度: O(1)

空间复杂度: O(1)

# Solution class to calculate delayed arrival time

class Solution: 
    def findDelayedArrivalTime(self, arrivalTime: int, delayedTime: int) -> int: 
        # 计算总时间并对24取模以得到正确的时间(考虑24小时循环)
        return (arrivalTime + delayedTime) % 24

Explore

是的,如果`delayedTime`为24小时,这在实践中确实意味着列车实际上并没有延误,因为它延误了整整一天并回到了原始的时间点。解题方案使用的`% 24`确实考虑到了这一点,因为`arrivalTime + 24`后再对24取模,结果仍然会是原始的`arrivalTime`。这确保了算法能正确处理这种情况。

的确,使用`% 24`得到结果为0时,有可能导致理解上的混淆,因为`0`小时在24小时制中表示一天的开始,而通常理解为`24`时表示前一天的结束。解题代码确实没有直接处理这种概念上的区别,可能需要在文档或用户界面中清晰地解释`0`小时代表的是次日的开始,以避免混淆。

虽然逻辑上正确,但从用户体验的角度来看,确实需要对跨天情况进行额外的说明或标记。例如,可以在输出结果旁边加注说明(如'次日凌晨1点'),或者提供一个额外的输出,明确指出结果属于次日。这样可以帮助用户更好地理解输出结果,避免潜在的误解。

确实,当前的方法仅处理小时级别的延误,不够灵活和通用。设计一个更通用的方法,可以接受小时和分钟的延误,并能够处理跨小时甚至跨天的情况,将会大大提高代码的复用性和适应性。例如,可以修改方法以接受额外的分钟参数,并适当调整计算逻辑来处理小时和分钟的进位问题。