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"并结束。

  • • 若不等于:跳过此分支,继续往下。

3. 第二个判断:是否橙灯

如果timer不等于0,接着判断timer是否等于30

  • • 若等于30:剩余恰好 30 秒,对应橙灯(黄灯),返回"Orange"

  • • 若不等于:继续后续判断。

4. 第三个判断:是否红灯

前两个条件均不满足时,检查timer是否满足大于 30 且小于等于 90(即30 < timer <= 90,数学上等价于 31 ≤ timer ≤ 90)。

  • • 若满足:剩余时间落在红灯区间,返回"Red"

  • • 若不满足:说明timer属于无效范围,执行最后的返回。

5. 无效情况处理

以上三个条件都不成立时(例如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)

Go完整代码如下:

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助力您的未来发展。