问题描述(来源于leetcode)

给定一个四舍五入到两位小数的非负浮点数 celsius 表示摄氏度,需要将其转换为开氏度和华氏度,并以数组 [kelvin, fahrenheit] 的形式返回结果。

转换公式

  • 开氏度 = 摄氏度 + 273.15
  • 华氏度 = 摄氏度 × 1.80 + 32.00

注意: 与实际答案误差不超过 10⁻⁵ 的结果被视为正确。

解法分析

这是一个基础的数学计算问题,直接应用给定的转换公式即可解决。

代码实现

1
2
3
4
5
class Solution:
def convertTemperature(self, celsius: float) -> List[float]:
Kelvin = celsius + 273.15
Fahrenheit = celsius * 1.80 + 32.00
return [Kelvin, Fahrenheit]

算法详解

步骤分解

  1. 接收输入:获取表示摄氏度的浮点数 celsius
  2. 计算开氏度:使用公式 Kelvin = celsius + 273.15
  3. 计算华氏度:使用公式 Fahrenheit = celsius × 1.80 + 32.00
  4. 返回结果:以数组形式返回 [Kelvin, Fahrenheit]

复杂度分析

  • 时间复杂度:O(1) - 只涉及常数次数学运算
  • 空间复杂度:O(1) - 只使用了固定数量的变量

示例演示

示例 1

1
2
3
4
5
输入:celsius = 36.50
输出:[309.65000, 97.70000]
解释:
开氏度 = 36.50 + 273.15 = 309.65
华氏度 = 36.50 × 1.80 + 32.00 = 97.70

示例 2

1
2
3
4
5
输入:celsius = 122.11
输出:[395.26000, 251.79800]
解释:
开氏度 = 122.11 + 273.15 = 395.26
华氏度 = 122.11 × 1.80 + 32.00 = 251.798

温度单位知识扩展

三种温度标度对比

温度标度 发明者 零点定义 沸点定义 应用领域
摄氏度(°C) 安德斯·摄尔修斯 水的冰点 水的沸点 日常生活、科学
开氏度(K) 开尔文勋爵 绝对零度 水的沸点 科学研究
华氏度(°F) 丹尼尔·华伦海特 盐水冰点 人体温度 美国日常

转换公式总结

  • 摄氏转开氏:K = °C + 273.15
  • 开氏转摄氏:°C = K - 273.15
  • 摄氏转华氏:°F = °C × 1.8 + 32
  • 华氏转摄氏:°C = (°F - 32) ÷ 1.8

总结

这道题目是一个基础的数学计算问题,主要考察:

  1. 对基本数学公式的理解和应用能力
  2. 浮点数运算的准确性
  3. 数组的构建和返回

虽然题目简单,但它涉及了实际生活中常用的温度单位转换,具有实用价值。通过解决这个问题,我们可以更好地理解不同温度标度之间的关系,为后续更复杂的计算问题打下基础。