475. 供暖器(Python)

題目

難度:★★☆☆☆
類型:數(shù)組

冬季已經(jīng)來臨。 你的任務(wù)是設(shè)計一個有固定加熱半徑的供暖器向所有房屋供暖。

現(xiàn)在,給出位于一條水平線上的房屋和供暖器的位置,找到可以覆蓋所有房屋的最小加熱半徑。

所以,你的輸入將會是房屋和供暖器的位置。你將輸出供暖器的最小加熱半徑。

說明:

給出的房屋和供暖器的數(shù)目是非負數(shù)且不會超過 25000。
給出的房屋和供暖器的位置均是非負數(shù)且不會超過10^9。
只要房屋位于供暖器的半徑內(nèi)(包括在邊緣上),它就可以得到供暖。
所有供暖器都遵循你的半徑標準,加熱的半徑也一樣。

示例

示例 1:
輸入: [1,2,3],[2]
輸出: 1
解釋: 僅在位置2上有一個供暖器。如果我們將加熱半徑設(shè)為1,那么所有房屋就都能得到供暖。

示例 2:
輸入: [1,2,3,4],[1,4]
輸出: 1
解釋: 在位置1, 4上有兩個供暖器。我們需要將加熱半徑設(shè)為1,這樣所有房屋就都能得到供暖。

解答

為了找到保證所有房屋都得到供暖的暖器輻射范圍,我們需要考慮房屋與暖器的最遠距離即可。

  1. 對于每一個房屋,我們找到距離這個房屋最近的暖器,并算出距離dist;

  2. 對于所有房屋計算出的dist,取其中的最大值,即為暖器至少需要的輻射范圍。

這里,我們使用二分搜索來確定一個數(shù)字在排序列表中的位置,調(diào)用Python中的bisect模塊實現(xiàn)。例如,找到3.2在數(shù)組[1,2,3,4,5]中的位置,只需要bisect.bisect_left([1,2,3,4,5], 3.2)即可,函數(shù)返回3。

import bisect


class Solution:
    def findRadius(self, houses, heaters):
        res = 0
        heaters.sort()
        for house in sorted(houses):
            idx = bisect.bisect_left(heaters, house)

            if idx == 0:                                                # 房屋house在所有暖器的左邊
                dist = heaters[0] - house                               # 離該房屋最近的暖器就是最左邊的暖器

            elif idx == len(heaters):                                   # 房屋house在所有暖器的右邊
                dist = house - heaters[-1]                              # 離該房屋最近的暖器就是最右邊的暖器

            else:                                                       # 房屋house在暖器中間
                dist = min(house-heaters[idx-1], heaters[idx]-house)    # 房屋house左右最近暖器距離最小值

            res = max(res, dist)                                        # res用來統(tǒng)計最近距離的最大值
        
        return res

如有疑問或建議,歡迎評論區(qū)留言~

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • hello,親愛的你 前段時間我讀泰戈爾的《流螢集》,有種溫柔的情感包圍這整個身體。 就像這個戀愛的季節(jié),摟摟抱抱...
    她街拍閱讀 838評論 0 0
  • 機會是給勇于開始并堅持的人 事件:今天科目二第二次考我又失敗了,真的是開始懷疑人生了。 分析:是什么原因讓我再次失...
    依米Sunshine閱讀 200評論 0 0
  • 一:應(yīng)用介紹 流量先生采用國內(nèi)先進的節(jié)流方式,可幫助顧客最大限度的節(jié)流。是您閑暇之時必不可少的好伙伴! 二:使用方...
    花花小調(diào)閱讀 472評論 0 0
  • 1、打電話前,先想好自己要了解什么,要問什么,寫個大概在紙上。盡量不要一個電話打完之后,因為話沒問完,再打電話。2...
    洋蔥頭818閱讀 295評論 0 0

友情鏈接更多精彩內(nèi)容