leetcode-475:供暖器

简介: leetcode-475:供暖器

题目

题目链接

冬季已经来临。 你的任务是设计一个有固定加热半径的供暖器向所有房屋供暖。

在加热器的加热半径范围内的每个房屋都可以获得供暖。

现在,给出位于一条水平线上的房屋 houses 和供暖器 heaters 的位置,请你找出并返回可以覆盖所有房屋的最小加热半径。

说明:所有供暖器都遵循你的半径标准,加热的半径也一样。

示例 1:

输入: houses = [1,2,3], heaters = [2]
输出: 1
解释: 仅在位置2上有一个供暖器。如果我们将加热半径设为1,那么所有房屋就都能得到供暖。

示例 2:

输入: houses = [1,2,3,4], heaters = [1,4]
输出: 1
解释: 在位置1, 4上有两个供暖器。我们需要将加热半径设为1,这样所有房屋就都能得到供暖。

示例 3:

输入:houses = [1,5], heaters = [2]
输出:3

解题

方法一:排序+二分查找

遍历每个房屋,利用二分查找,查找离这个房屋最近的取暖器。取最大的距离为结果。

1.房子位置 比 所有取暖器位置 都要小(index=0),求房子与最左边的取暖器的距离

2.房子位置 比 所有取暖器位置 都要大(index=heater.size()),求房子与最右边取暖器的距离

3.房子位置 在取暖器们 中间, 求与房子左侧和右侧取暖器距离的最小值。

class Solution {
public:
    int findRadius(vector<int>& houses, vector<int>& heaters) {
        sort(houses.begin(),houses.end());
        sort(heaters.begin(),heaters.end());
        int res=0;
        for(int house:houses){
            res=max(res,distance(house,heaters));
        }
        return res;
    }
    int distance(int house,vector<int>& heaters){
        if(heaters.size()==1) return abs(house-heaters[0]);
        int index=lower_bound(heaters.begin(),heaters.end(),house)-heaters.begin();
        if(index==0) return abs(house-heaters[0]);
        if(index==heaters.size()) return abs(house-heaters.back());
        return min(abs(house-heaters[index-1]),abs(house-heaters[index]));
    }
};
相关文章
|
Java API Maven
一文搞懂Java日志级别,重复记录、丢日志问题(下)
一文搞懂Java日志级别,重复记录、丢日志问题
1501 0
一文搞懂Java日志级别,重复记录、丢日志问题(下)
|
存储 监控 Linux
【Shell 命令集合 系统管理 】⭐⭐⭐Linux 查看当前正在运行的进程信息 ps命令 使用指南
【Shell 命令集合 系统管理 】⭐⭐⭐Linux 查看当前正在运行的进程信息 ps命令 使用指南
325 0
|
11月前
|
存储 关系型数据库 数据库
什么是索引
【10月更文挑战第15天】什么是索引
|
监控 数据安全/隐私保护 异构计算
借助PAI-EAS一键部署ChatGLM,并应用LangChain集成外部数据
【8月更文挑战第8天】借助PAI-EAS一键部署ChatGLM,并应用LangChain集成外部数据
231 1
|
SQL 分布式计算 数据处理
【Hive】请说明hive中 Sort By,Order By,Cluster By,Distrbute By各代表什么意思?
【4月更文挑战第17天】【Hive】请说明hive中 Sort By,Order By,Cluster By,Distrbute By各代表什么意思?
|
弹性计算 负载均衡 定位技术
阿里云服务器地域怎么选择比较好?
阿里云服务器的地域选择至关重要,涉及速度延迟、内网互通、价格差异及备案限制。应依据用户位置就近选择,如北方选华北、南方选华南、全国性服务优选华东。中国大陆内部网络延迟较小,但国际线路差异明显。需考虑内网互通以优化性能,不同地域价格也有所不同。此外,如需在中国内地进行经营性备案,则需选择特定地域如北京或深圳。综合考量这些因素,可确保业务高效稳定运行。更多详情参见阿里云官方页面。
|
算法 索引
SFNC —— 采集控制(四)(下)
SFNC —— 采集控制(四)
184 2
|
网络协议 安全 Linux
如何使用Android手机通过JuiceSSH远程访问本地Linux服务器
如何使用Android手机通过JuiceSSH远程访问本地Linux服务器
|
消息中间件 Windows
win10 安装RabbitMQ的步骤--和报错解决
win10 安装RabbitMQ的步骤--和报错解决
328 4