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 <= housesi, heatersi <= 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. 优势洗牌

相关推荐
for_ever_love__5 小时前
MySQL ORDER BY 排序优化:从 Using filesort 到索引有序扫描(含双路 / 单路排序原理)
java·mysql·优化·存储·by·order·filesort
我是人✓6 小时前
Java文件上传三方式对比:从传统到SpringBoot
java·开发语言
欣栀♡6 小时前
JVM 频繁 Full GC 先看日志括号里的 cause,jstat 的 FGC 在 JDK 8 上会骗人
java·jvm
Navigator_Z6 小时前
LeetCode //C - 1289. Minimum Falling Path Sum II
c语言·算法·leetcode
CCblandy7 小时前
令牌桶在 0.9 倍负载超发 19%、固定窗口边界放行 20 个:四种限流算法同构实测
后端·python·算法·性能优化·架构
IT研究室7 小时前
最新计算机毕业设计选题推荐-基于spring boot的葡萄酒文化宣传网站-网站-文档指导-Java-springboot
java·spring boot·课程设计
慧都小项7 小时前
MyEclipse 中创建和测试 JAX-RS REST 接口:从项目配置到 REST Explorer
java·restful·myeclipse·jax-rs
Wang's Blog7 小时前
Java 项目实战: 交友项目 - 入门案例:编写 Dubbo 服务提供者
java·dubbo·交友
mmmmath_37 小时前
LeetCode.104.二叉树的最大深度
数据结构·leetcode
秋饼7 小时前
Spring AI 2.0 结构化输出企业级实战:从 BeanOutputConverter 源码到生产级解析容错
java·ai·技术分享·后端开发