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
提示:
- 按描述模拟即可
解题思路
这道题目是一个简单的条件判断问题,我们需要根据给定的规则来判断交通信号灯的状态。
解题思路: 根据题目描述,我们需要按照以下优先级进行判断:
- 如果 timer 等于 0,返回 “Green”
- 如果 timer 等于 30,返回 “Orange”
- 如果 timer 在 (30, 90] 范围内,返回 “Red”
- 其他情况返回 “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) | 只使用了常数额外空间 |