Python 实现智能空调制冷总时长计算,复杂度仅 O(n)!
以下是使用 Python 实现的代码: ```python # 读取温度过高事件的次数 n = int(input()) # 读取空调每次开启制冷后的持续时间 c = int(input()) # 初始化总制冷时间和当前制冷结束时间 total_time = 0 end_time = 0 # 循环读取每次温度过高事件的发生时间 for _ in range(n): t = int(input()) # 如果当前温度过高事件发生在当前制冷结束时间之后 if t >= end_time: # 计算新的制冷时间 total_time += c # 更新当前制冷结束时间 end_time = t + c else: # 如果在制冷期间再次检测到温度过高,重置制冷开始时间 # 计算新的制冷时间,为当前制冷结束时间与新的制冷结束时间的差值 new_end_time = t + c total_time += new_end_time - end_time # 更新当前制冷结束时间 end_time = new_end_time # 输出空调运行制冷的总时间 print(total_time) ``` 代码解释: 1. 读取输入:首先读取温度过高事件的次数 `n` 和空调每次开启制冷后的持续时间 `c`。 2. 初始化变量:初始化总制冷时间 `total_time` 为 0,当前制冷结束时间 `end_time` 为 0。 3. 循环处理温度过高事件: - 读取每次温度过高事件的发生时间 `t`。 - 如果 `t` 大于等于 `end_time`,说明当前制冷已经结束,需要开启新的制冷,更新总制冷时间和当前制冷结束时间。 - 如果 `t` 小于 `end_time`,说明在制冷期间再次检测到温度过高,需要重置制冷开始时间,更新总制冷时间和当前制冷结束时间。 4. 输出结果:输出空调运行制冷的总时间。 复杂度分析: - 时间复杂度:$O(n)$,其中 $n$ 是温度过高事件的次数。 - 空间复杂度:$O(1)$,只使用了常数级的额外空间。 ######[AI问答 | 487点数解答 | 2025-12-06 18:33:34]
- Python 运行报错:urllib3 网络连接创建失败,原因及排查建议(字节豆包 | 161点数解答 | 2024-10-31 00:39:36)458
- Python 实现球类:精准计算半径、表面积与体积,附输入验证与异常处理!(阿里通义 | 261点数解答 | 2024-11-28 21:19:39)343
- C++求解序列或与运算和差值:避O(nq)复杂度及数据处理要点(字节豆包 | 534点数解答 | 2025-10-17 20:05:07)60
- Python 实战:学生信息列表转字典、遍历、深拷贝及数据修改全流程(GPT | 422点数解答 | 2024-10-29 15:43:54)414
- Python实战:学生成绩列表转字典,深拷贝与数据修改操作全解析(字节豆包 | 254点数解答 | 2024-10-29 16:01:39)405
- 51 单片机:定时器 0 实现 8 个 LED 循环点亮,附代码及优化建议(字节豆包 | 1193点数解答 | 2024-12-27 15:10:29)310
- C++ 代码实现自定义运算 x@y = x² + y² - xy 及 x@(x+y) 计算(DeepSeek | 215点数解答 | 2025-12-13 15:08:14)67
- C++ 实现根据输入正整数奇偶性计算偶数和或约数和(字节豆包 | 838点数解答 | 2026-02-28 20:23:59)24
- Java调用Python接口中文乱码?设置UTF - 8编码一招解决!(讯飞星火 | 263点数解答 | 2024-06-06 17:07:59)389
- 解决Java调用Python接口中文乱码问题:设置UTF - 8编码全攻略(讯飞星火 | 160点数解答 | 2024-06-06 17:18:39)414
- Java调用Python接口中文乱码问题:字符编码统一解决方案(讯飞星火 | 344点数解答 | 2024-06-06 17:19:55)526
- 解决Java调用Python接口时中文值乱码问题:设置字符编码为UTF-8(讯飞星火 | 264点数解答 | 2024-06-06 17:27:09)389