leetcode475. 供暖器(二分查找)
                                                            生活随笔
收集整理的這篇文章主要介紹了
                                leetcode475. 供暖器(二分查找)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.                        
                                冬季已經來臨。 你的任務是設計一個有固定加熱半徑的供暖器向所有房屋供暖。
現在,給出位于一條水平線上的房屋和供暖器的位置,找到可以覆蓋所有房屋的最小加熱半徑。
所以,你的輸入將會是房屋和供暖器的位置。你將輸出供暖器的最小加熱半徑。
說明:
給出的房屋和供暖器的數目是非負數且不會超過 25000。
 給出的房屋和供暖器的位置均是非負數且不會超過10^9。
 只要房屋位于供暖器的半徑內(包括在邊緣上),它就可以得到供暖。
 所有供暖器都遵循你的半徑標準,加熱的半徑也一樣。
 示例 1:
輸入: [1,2,3],[2]
 輸出: 1
 解釋: 僅在位置2上有一個供暖器。如果我們將加熱半徑設為1,那么所有房屋就都能得到供暖。
代碼
class Solution {public int findRadius(int[] houses, int[] heaters) {Arrays.sort(houses);Arrays.sort(heaters);int max=0;for(int house:houses)max= Math.max(max,find(house,heaters));return max;}public int find(int loc, int[] heaters) {//二分查找int l=0,n=heaters.length,r=n-1;while (l<=r){int mid=(r-l)/2+l;if(heaters[mid]==loc)return 0;else if(heaters[mid]>loc)r=mid-1;else l=mid+1;}if(l==n) return loc-heaters[n-1];//房子應該放在供暖右邊else if(r<0) return heaters[0]-loc;//房子應該放在供暖左邊else return Math.min(heaters[l]-loc,loc-heaters[r]);//比較更近的供暖} }總結
以上是生活随笔為你收集整理的leetcode475. 供暖器(二分查找)的全部內容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: leetcode696. 计数二进制子串
- 下一篇: 梦到很多鱼籽是什么征兆
