Leetcode / C++ / 475. Heaters 解题报告+源代码

来源:互联网 发布:js防水涂料是什么意思 编辑:程序博客网 时间:2024/04/28 02:59

链接:

https://leetcode.com/problems/heaters/



思路:


将heater排序好。

然后依次取出house,如果在heater中找到了,那么只需要半径为0,可以忽略;

如果没有找到,那么就找到离house最近的两个(用upper_bound实现),取当中距离小的为半径。

维护一个全程最大的半径值return。



AC代码:


class Solution {public:    int findRadius(vector<int>& houses, vector<int>& heaters) {        sort(heaters.begin(),heaters.end(),less<int>());//greater<int>()是从大到小,less是从小到大,不小心记混了        int res=0;        for(int i=0;i<houses.size();++i){            if(!binary_search(heaters.begin(),heaters.end(),houses[i])){//binary_search返回值bool                auto index=upper_bound(heaters.begin(),heaters.end(),houses[i])-heaters.begin();//upperbound返回第一个大于的,lowerbound返回第一个等于或者大于的                int right=(index<heaters.size()?heaters[index]-houses[i]:INT_MAX);                int left= (index-1>=0?houses[i]-heaters[index-1]:INT_MAX);                res=max(res,min(right,left));            }        }        return res;    }};


0 0
原创粉丝点击