当前位置: 面试刷题>> 加热器 (经典算法题500道)


题目描述补充

题目:加热器问题

假设你有一个一维的加热器设备,它的长度是固定的,我们用一个整数数组 heaters 来表示,其中 heaters[i] 表示位置 i 上有一个加热器,其加热范围为它左右各 radius 个单位(包含 radius 本身)。现在,给定一个整数 radius 和一个整数 target,表示你需要在位置 target 上放置一个温度计来测量温度。

你的任务是找到温度计在位置 target 上时,它能感受到的最高温度。温度计可以感受到来自左侧和右侧加热器的温度,但只会记录感受到的最高温度。

注意

  • 如果没有加热器在 target 的加热范围内,则温度计感受的温度为 0。
  • 如果有多个加热器在 target 的加热范围内,温度计将记录这些加热器中的最高温度。

示例

输入

  • heaters = [1, 2, 3]
  • radius = 1
  • target = 2

输出

  • 3

解释

  • 加热器在位置 1, 2, 3 上,加热半径为 1。
  • 温度计在位置 2 上,它可以感受到来自位置 2 和位置 3 的加热器的温度,其中位置 3 的加热器温度最高,为 3。

PHP 示例代码

function findRadiusHeat($heaters, $radius, $target) {
    $maxTemp = 0;
    foreach ($heaters as $heater) {
        if (abs($heater - $target) <= $radius) {
            $maxTemp = max($maxTemp, $heater);
        }
    }
    return $maxTemp;
}

// 示例用法
$heaters = [1, 2, 3];
$radius = 1;
$target = 2;
echo findRadiusHeat($heaters, $radius, $target); // 输出 3

Python 示例代码

def findRadiusHeat(heaters, radius, target):
    max_temp = 0
    for heater in heaters:
        if abs(heater - target) <= radius:
            max_temp = max(max_temp, heater)
    return max_temp

# 示例用法
heaters = [1, 2, 3]
radius = 1
target = 2
print(findRadiusHeat(heaters, radius, target))  # 输出 3

JavaScript 示例代码

function findRadiusHeat(heaters, radius, target) {
    let maxTemp = 0;
    for (let heater of heaters) {
        if (Math.abs(heater - target) <= radius) {
            maxTemp = Math.max(maxTemp, heater);
        }
    }
    return maxTemp;
}

// 示例用法
const heaters = [1, 2, 3];
const radius = 1;
const target = 2;
console.log(findRadiusHeat(heaters, radius, target)); // 输出 3

码小课网站中有更多相关内容分享给大家学习,包括但不限于算法设计、数据结构、编程技巧等,欢迎大家访问学习。

推荐面试题