"""
设计:Python程序设计
作者:初学者
日期:2022年 03月 30日
"""
# 例86 加热器
# 1.问题描述
# 设计一个具有固定加热半径的加热器。已知所有房屋和加热器所处的位置,它们均分布在一条水平线上。
# 找出最少的加热半径,使得所有房屋都处在至少一个加热器的加热范围内。输入是所有房屋和加热器所处的位置。
# 输出为加热器最少的加热半径。
# 2.问题示例
# 输入房屋位置为[1,2,3],加热器位置为[2],输出半径为1,因为唯一的一个加热器放在2的位置,那么只要加热半径为1,
# 加热范围就能覆盖到所有房屋了。
# 3.代码实现
class Solution:
"""
参数houses:数组
参heaters:整数
返回整数
"""
def calorifier(self, houses, heaters):
heaters.sort()
ans = 0
for house in houses:
ans = max(ans, self.closest_hearter(house, heaters))
return ans
def closest_hearter(self, house, heaters):
start = 0
end = len(heaters) - 1
while start + 1 < end:
m = start + (end - start) // 2
if heaters[m] == house:
return 0
elif heaters[m] < house:
start = m
else:
end = m
return min(abs(house - heaters[start]), abs(heaters[end] - house))
# 主函数
if __name__ == '__main__':
s = Solution()
n = [1, 2, 3]
m = [2]
print("输入房间的位置:", n)
print("输入加热器的位置:", m)
print("输出加热半径:", s.calorifier(n, m))
加热器的最少半径
最新推荐文章于 2024-10-13 19:04:04 发布