文章来源地址https://www.toymoban.com/news/detail-677175.html
给你一个正整数 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
我的答案:
一、信息
1.给我正整数arT-表示列车正点到站时间
2.delT列车延误的时间
3.求列车实际到站的时间
4.24h制
二、分析
1.刚开始觉得没什么好分析的三个条件直接的关系就是factTime=arT+delT,但是检查分析的时候发现了问题。
2.问题出现
(1)24小时制的限制
如果正点为23点,延误了两小时那么会怎么样呢?如果是这样根据已有给出的式子我会得到25,但是是24h制这就意味着每次相加都要先看看满不满足factT<24,如果不满足很简单那么直接就%24即对24取余,这也是我理解的模这个概念出现的原因和用法。那么了解了这点问题就可以解决了
三、步骤
四、实现
C语言:
错误示范:
int findDelayedArrivalTime(int arrivalTime, int delayedTime){
int factTime;
factTime=arrivalTime+findDelayedArrivalTime;
if(factTime>24){
factTime=factTime%24;
}
printf("%d",factTime);
}
错误了:
错误理解及原因:
这个错误和警告消息是来自C编译器的输出,具体地,是针对名为 `solution.c` 的源文件。从给定的信息中,我们可以识别出以下几点:
1. **警告1**:`assignment to ‘int’ from ‘int (*)(int, int)’ makes integer from pointer without a cast [-Wint-conversion]`。
这个警告发生在文件 `solution.c` 的第3行。它告诉我们代码试图将一个指向函数的指针赋给一个整数变量 (`int`),而没有进行适当的类型转换。代码中的相关部分是:
```c
factTime = arrivalTime + findDelayedArrivalTime;
```
这里的问题是 `findDelayedArrivalTime` 可能是一个函数,而不是一个整数值。如果想调用这个函数并使用它的返回值,那么你需要使用相应的参数来调用它,如 `findDelayedArrivalTime(arg1, arg2)`。
2. **错误**:`control reaches end of non-void function [-Werror=return-type]`。
这个错误发生在文件 `solution.c` 的第8行。它告诉我们一个非`void`函数在其结束前没有返回任何值。每一个声明为返回某种类型的函数(除了`void`)都必须在所有代码路径上返回该类型的值。例如,如果函数声明为返回`int`,则该函数必须确保在其结束之前返回一个`int`值。
3. **注意**: `cc1: some warnings being treated as errors`。
这告诉我们,由于某些编译设置,一些通常只被视为警告的事项现在被当作错误来处理。这通常是为了确保代码的高质量或满足某些编码标准。
总结:要修复这些问题,你需要:
- 正确调用 `findDelayedArrivalTime` 函数(如果它确实是一个函数)并使用其返回值。
- 确保 `findDelayedArrivalTime` 函数在所有可能的路径上都有返回值。
正确答案:
英雄师傅的题解:
int findDelayedArrivalTime(int arrivalTime, int delayedTime){
return(arrivalTime+delayedTime)%24;
}
总结:
从这道题目中,我们可以学到以下几点:
1. **模运算的应用**:这道题目明显地展示了模运算(`%`)的实用性。在许多情况下,尤其是涉及到循环或周期性事件时(例如24小时制、星期、年份中的天数等),模运算是一个非常有用的工具。
2. **时间表示的巧妙**:24小时制是时间表示的一种方式,当时间达到24时,它会回到0。这种表示方式的理解和处理对于某些编程问题来说是非常关键的。
3. **问题简化**:尽管时间的处理在现实生活中可能会更复杂(考虑到分钟、秒等),但为了这个特定的问题,我们仅关注小时。这表明,简化问题,聚焦于主要的挑战,可以帮助我们更容易地找到解决方案。
4. **错误和警告的解读**:在之前的错误提示中,我们学到了如何解读编译器的错误和警告信息,以及如何从这些提示中修正代码。
5. **函数的返回值**:函数的返回值类型和它实际返回的类型之间应该保持一致。如果一个函数声明为返回一个整数,那么它应该在所有代码路径上确实返回一个整数。
6. **明确的函数命名**:函数名`findDelayedArrivalTime`清晰地表明了它的目的,这有助于代码的可读性。
7. **测试示例的重要性**:示例提供了清晰的视图,说明了函数应该如何工作,并为我们提供了测试我们解决方案的机会。
总之,这道题不仅测试了我的编程技能,还增强了我处理周期性事件、解读错误和警告以及编写清晰代码的能力。
文章来源:https://www.toymoban.com/news/detail-677175.html
到了这里,关于Leetcode 2651.计算列车到站时间的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!