码迷,mamicode.com
首页 > 其他好文 > 详细

475. 供暖器

时间:2020-06-08 14:25:21      阅读:49      评论:0      收藏:0      [点我收藏+]

标签:elf   radius   最小值   之间   并且   self   def   图片   一个   

技术图片
技术图片

class Solution(object):
    def findRadius(self, houses, heaters):
        """
        :type houses: List[int]
        :type heaters: List[int]
        :rtype: int
        """
        ans = []
        heaters.sort()
        for h in houses:
            l, r = 0, len(heaters) - 1
            while l < r:
                mid = int((l + r) / 2)
                if heaters[mid] < h:
                    l = mid + 1
                else:
                    r = mid
            # 若找到的值等于 house ,则说明 house 房屋处放有一个加热器,house 房屋到加热器的最短距离为 0
            if heaters[l] == h:
                ans.append(0)
            # 若该加热器的坐标值小于 house ,说明该加热器的坐标与 house 之间没有别的加热器
            elif heaters[l] < h:
                ans.append(h - heaters[l])
            # 若该加热器的坐标值大于 house 并且left不等于 0 ,说明 house 介于left和left-1之间,
            # 房屋到加热器的最短距离就是left和left - 1处加热器与 house 差值的最小值
            elif l:
                ans.append(min(heaters[l] - h, h - heaters[l - 1]))
            else:
                ans.append(heaters[l] - h)
        return max(ans)

475. 供暖器

标签:elf   radius   最小值   之间   并且   self   def   图片   一个   

原文地址:https://www.cnblogs.com/panweiwei/p/13065267.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!