Easy

题目描述

给定一个整数 timer,表示交通信号灯的剩余时间(以秒为单位)。

信号灯遵循以下规则:

  • 如果 timer == 0,信号灯是 “Green”
  • 如果 timer == 30,信号灯是 “Orange”
  • 如果 30 < timer <= 90,信号灯是 “Red”

返回信号灯的当前状态。如果不满足上述任何条件,返回 “Invalid”。

示例 1:

输入:timer = 60
输出:"Red"
解释:因为 timer = 60,且 30 < timer <= 90,所以答案是 "Red"。

示例 2:

输入:timer = 5
输出:"Invalid"
解释:因为 timer = 5,不满足任何给定条件,所以答案是 "Invalid"。

约束条件:

  • 0 <= timer <= 1000

提示:

  • 按描述模拟即可

解题思路

这道题目是一个简单的条件判断问题,我们需要根据给定的规则来判断交通信号灯的状态。

解题思路: 根据题目描述,我们需要按照以下优先级进行判断:

  1. 如果 timer 等于 0,返回 “Green”
  2. 如果 timer 等于 30,返回 “Orange”
  3. 如果 timer 在 (30, 90] 范围内,返回 “Red”
  4. 其他情况返回 “Invalid”

需要注意的是,条件判断的顺序很重要。虽然题目中给出的顺序看起来有些特殊,但我们需要严格按照题意来实现。特别要注意 timer = 30 的情况是 “Orange”,而不是 “Red”,即使 30 在数学上可能被认为在某个范围的边界上。

实现方法: 使用简单的 if-else 条件语句,按照题目规则的优先级依次判断即可。这种方法时间复杂度为 O(1),空间复杂度也为 O(1),是最直接有效的解法。

代码实现

class Solution {
public:
    string trafficSignal(int timer) {
        if (timer == 0) {
            return "Green";
        } else if (timer == 30) {
            return "Orange";
        } else if (timer > 30 && timer <= 90) {
            return "Red";
        } else {
            return "Invalid";
        }
    }
};
class Solution:
    def trafficSignal(self, timer: int) -> str:
        if timer == 0:
            return "Green"
        elif timer == 30:
            return "Orange"
        elif 30 < timer <= 90:
            return "Red"
        else:
            return "Invalid"
public class Solution {
    public string TrafficSignal(int timer) {
        if (timer == 0) {
            return "Green";
        } else if (timer == 30) {
            return "Orange";
        } else if (timer > 30 && timer <= 90) {
            return "Red";
        } else {
            return "Invalid";
        }
    }
}
/**
 * @param {number} timer
 * @return {string}
 */
var trafficSignal = function(timer) {
    if (timer === 0) return "Green";
    if (timer === 30) return "Orange";
    if (timer > 30 && timer <= 90) return "Red";
    return "Invalid";
};

复杂度分析

复杂度类型复杂度说明
时间复杂度O(1)只需要进行常数次条件判断
空间复杂度O(1)只使用了常数额外空间