2026-07-24:交通信号灯的颜色。用go语言,给定一个整数 timer,表示交通信号灯剩余的秒数。你需要按照以下对应关系判断并返回当前信号灯的颜色:
剩余 0 秒时,信号灯为 "Green"(绿灯)。
剩余恰好 30 秒时,信号灯为 "Orange"(橙灯/黄灯)。
剩余秒数在大于 30 且小于等于 90 的范围内(即 31 到 90 秒之间)时,信号灯为 "Red"(红灯)。
如果剩余秒数不在上述任何一种情况中(例如负数、129 秒、3190 以外的正数等),则视为无效输入,返回 "Invalid"。
0 <= timer <= 1000。
输入: timer = 60。
输出: "Red"。
解释:
因为 timer = 60,且 30 < timer <= 90,所以答案是 "Red"。
题目来自力扣3894。
过程描述 1. 函数定义与输入
定义函数trafficSignal,接收一个整数timer,表示信号灯剩余的秒数。题目限定timer范围在[0, 1000],但函数本身会处理所有整数输入。
2. 第一个判断:是否绿灯
进入函数后,首先检查timer是否等于0。
• 若等于
0:剩余时间为 0 秒,对应绿灯,函数直接返回字符串"Green"并结束。• 若不等于:跳过此分支,继续往下。
如果timer不等于0,接着判断timer是否等于30。
• 若等于
30:剩余恰好 30 秒,对应橙灯(黄灯),返回"Orange"。• 若不等于:继续后续判断。
前两个条件均不满足时,检查timer是否满足大于 30 且小于等于 90(即30 < timer <= 90,数学上等价于 31 ≤ timer ≤ 90)。
• 若满足:剩余时间落在红灯区间,返回
"Red"。• 若不满足:说明
timer属于无效范围,执行最后的返回。
以上三个条件都不成立时(例如timer为 129、911000,或其它可能的非法值),函数执行最后的return "Invalid",表示输入无效。
6.main函数执行流程
• 定义变量
timer := 60。• 调用
trafficSignal(60),将 60 作为参数传入。• 函数内部按顺序判断:
•
60 == 0?否。•
60 == 30?否。•
30 < 60 <= 90?是,因为 60 大于 30 且小于等于 90,满足红灯条件。
• 返回字符串
"Red"。•
main接收返回值存入result,并通过fmt.Println打印输出"Red"。
•时间复杂度:
函数只包含三个独立的if判断,属于常数次比较操作。无论timer的值为多少,执行路径长度固定,无循环或递归。因此总时间复杂度为O(1)。•额外空间复杂度:
函数仅使用参数timer(整型)和返回的字符串字面量,没有动态分配内存、没有创建辅助数据结构,也没有递归调用栈的额外开销。所有字符串常量在编译时已确定,不随输入变化。因此总额外空间复杂度为O(1)。
package main
import (
"fmt"
)
func trafficSignal(timer int) string {
if timer == 0 {
return "Green"
}
if timer == 30 {
return "Orange"
}
if 30 < timer && timer <= 90 {
return "Red"
}
return "Invalid"
}func main() {
timer := 60
result := trafficSignal(timer)
fmt.Println(result)
}
Python完整代码如下:
# -*-coding:utf-8-*-
def traffic_signal(timer: int) -> str:
if timer == 0:
return "Green"
if timer == 30:
return "Orange"
if 30 < timer <= 90:
return "Red"
return "Invalid"if __name__ == "__main__":
timer = 60
result = traffic_signal(timer)
print(result)
C++完整代码如下:
std::string trafficSignal(int timer) {
if (timer == 0) {
return "Green";
}
if (timer == 30) {
return "Orange";
}
if (timer > 30 && timer <= 90) {
return "Red";
}
return "Invalid";
}int main() {
int timer = 60;
std::string result = trafficSignal(timer);
std::cout << result << std::endl;
return 0;
}
我们相信人工智能为普通人提供了一种“增强工具”,并致力于分享全方位的AI知识。在这里,您可以找到最新的AI科普文章、工具评测、提升效率的秘籍以及行业洞察。 欢迎关注“福大大架构师每日一题”,发消息可获得面试资料,让AI助力您的未来发展。
热门跟贴