leetcode 475. 供暖器(java)

供暖器

供暖器

难度 - 中等
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 <= houses.length, heaters.length <= 3 * 1e4

1 <= houses[i], heaters[i] <= 1e9

双指针

其实这个题最核心的解题思想就是,一个房子要么被前面一个供暖站供暖,要么被后面一个供暖站供暖。

怎么确定用哪个来供暖呢,根据题目中要求最小半径,因此比较哪个供暖半径小,选择哪个供暖站,并且记录下半径值。每次记录最小的供暖半径,在总答案中拿最大半径,就是最后要的答案了。

代码流程:

1.首先给房子的集合和供暖器集合排序

2.遍历每个房子,先记录下供暖需要的半径,然后和下一个供暖器之间半径对比,选择半径小的来供暖,

3.全局保留最大的半径。

代码演示

java 复制代码
  /**
     * 计算最短半径
     * @param houses
     * @param heaters
     * @return
     */
    public int findRadius(int[] houses, int[] heaters) {
        //半径
        Arrays.sort(heaters);
        Arrays.sort(houses);
        int ans = 0;
        for (int i = 0,j = 0;i < houses.length;i++){
            int r = Math.abs(houses[i] - heaters[j]);
            while (j < heaters.length - 1 && Math.abs(houses[i] - heaters[j]) >= Math.abs(houses[i] - heaters[j + 1])){
                j++;
                r = Math.min(r,Math.abs(houses[i] - heaters[j]));
            }
            ans = Math.max(ans,r);
        }
        return ans;
    }

双指针专题

leetcode 881. 救生艇

leetcode870. 优势洗牌

相关推荐
不爱吃炸鸡柳21 分钟前
数据结构精讲:树 → 二叉树 → 堆 从入门到实战
开发语言·数据结构
Aurorar0rua1 小时前
CS50 x 2024 Notes C - 05
java·c语言·数据结构
Cosmoshhhyyy2 小时前
《Effective Java》解读第49条:检查参数的有效性
java·开发语言
布谷歌2 小时前
常见的OOM错误 ( OutOfMemoryError全类型详解)
java·开发语言
6Hzlia2 小时前
【Hot 100 刷题计划】 LeetCode 739. 每日温度 | C++ 逆序单调栈
c++·算法·leetcode
eLIN TECE2 小时前
springboot和springframework版本依赖关系
java·spring boot·后端
良木生香2 小时前
【C++初阶】:STL——String从入门到应用完全指南(1)
c语言·开发语言·数据结构·c++·算法
老神在在0012 小时前
Spring Bean 的六种作用域详解
java·后端·spring
仙草不加料2 小时前
互联网大厂Java面试故事实录:三轮场景化技术提问与详细答案解析
java·spring boot·微服务·面试·aigc·电商·内容社区
程序员老邢2 小时前
【技术底稿 19】Redis7 集群密码配置 + 权限锁死 + 磁盘占满连锁故障真实排查全记录
java·服务器·经验分享·redis·程序人生·微服务