leetcode 工作每日一题 475. 供暖器 (二分 stl)

Posted goto_1600

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了leetcode 工作每日一题 475. 供暖器 (二分 stl)相关的知识,希望对你有一定的参考价值。

题意:
冬季已经来临。 你的任务是设计一个有固定加热半径的供暖器向所有房屋供暖。在加热器的加热半径范围内的每个房屋都可以获得供暖。现在,给出位于一条水平线上的房屋 houses 和供暖器 heaters 的位置,请你找出并返回可以覆盖所有房屋的最小加热半径。
思路:
可以二分写,但会多一个log,其实双指针on 能做的应该,无非就是找到离房子最近的供暖器,然后每个房子取max即可。
复杂度 O ( h o u s e s i z e ∗ l o g ( h e a t s i z e ) ) O( housesize * log(heatsize)) O(housesizelog(heatsize))

C++code:

class Solution 
public:
    int findRadius(vector<int>& houses, vector<int>& heaters) 
        int n=houses.size();
        sort(houses.begin(),houses.end());
        sort(heaters.begin(),heaters.end());
        int maxv=0;
        heaters.push_back(2e9);
        for(int i=0;i<n;i++)
        
            auto it=lower_bound(heaters.begin(),heaters.end(),houses[i]);
            int minv=abs(*it-houses[i]);
            if(it!=heaters.begin())
            it--,minv=min(minv,abs(*it-houses[i]));
            maxv=max(maxv,minv);
        
        return maxv;
    
;

以上是关于leetcode 工作每日一题 475. 供暖器 (二分 stl)的主要内容,如果未能解决你的问题,请参考以下文章

leetcode每日一题(475.供暖器)

LeetCode 997. 找到小镇的法官 / 475. 供暖器 / 1154. 一年中的第几天

《LeetCode之每日一题》:244.供暖器

leetcode 475. 供暖器(Heaters)

Leetcode 475.供暖气

LeetCode 475 供暖器[二分 排序] HERODING的LeetCode之路