首页 > 编程语言 >#yyds干货盘点# LeetCode程序员面试金典:供暖器

#yyds干货盘点# LeetCode程序员面试金典:供暖器

时间:2023-11-09 23:33:02浏览次数:44  
标签:yyds 供暖 heaters int 金典 houses 半径 LeetCode left

题目

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


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


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


注意:所有供暖器 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

代码实现

class Solution {
    public int findRadius(int[] houses, int[] heaters) {
        int ans = 0;
        Arrays.sort(heaters);
        for (int house : houses) {
            int i = binarySearch(heaters, house);
            int j = i + 1;
            int leftDistance = i < 0 ? Integer.MAX_VALUE : house - heaters[i];
            int rightDistance = j >= heaters.length ? Integer.MAX_VALUE : heaters[j] - house;
            int curDistance = Math.min(leftDistance, rightDistance);
            ans = Math.max(ans, curDistance);
        }
        return ans;
    }

    public int binarySearch(int[] nums, int target) {
        int left = 0, right = nums.length - 1;
        if (nums[left] > target) {
            return -1;
        }
        while (left < right) {
            int mid = (right - left + 1) / 2 + left;
            if (nums[mid] > target) {
                right = mid - 1;
            } else {
                left = mid;
            }
        }
        return left;
    }
}







标签:yyds,供暖,heaters,int,金典,houses,半径,LeetCode,left
From: https://blog.51cto.com/u_15488507/8286316

相关文章

  • LeetCode-88题合并两个有序数组
    给你两个按 非递减顺序 排列的整数数组 nums1 和 nums2,另有两个整数 m 和 n ,分别表示 nums1 和 nums2 中的元素数目。请你 合并 nums2 到 nums1 中,使合并后的数组同样按 非递减顺序 排列。注意:最终,合并后数组不应由函数返回,而是存储在数组 nums1 中。为了应......
  • # yyds干货盘点 # Python自动化办公——3个Excel表格中每个门店物品不同,想要汇总在一
    大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Python自动化办公处理的问题,一起来看看吧。上一篇文章中,我们已经看到了四种解决办法了,这一篇文章我们一起来看看另外一种方法。二、实现过程这里【论草莓如何成为冻干莓】给了unstack()操作的方法,代码如下......
  • LeetCode #1131 Maximum of Absolute Value Expression 绝对值表达式的最大值
    安装Flutter环境首先配置flutter3开发环境,照着官方教程傻瓜式安装即可。>>安装和环境配置|Flutter中文文档|Flutter中文开发者网站注意在国内网络环境下需要进行一些额外的环境配置:>>在中国网络环境下使用Flutter|Flutter中文文档|Flutter中文开发者网站Description......
  • LeetCode_0042. 接雨水
    题目描述给定n个非负整数表示每个宽度为1的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。示例示例1:输入:height=[0,1,0,2,1,0,1,3,2,1,2,1]输出:6解释:上面是由数组[0,1,0,2,1,0,1,3,2,1,2,1]表示的高度图,在这种情况下,可以接6个单位的雨水(蓝色部分表示雨......
  • # yyds干货盘点 # 盘点一个Excel表格数据筛选的问题(中篇)
    大家好,我是皮皮。一、前言前几天有粉丝问我Excel数据筛选的问题,原始数据如下图所示,其实一开始的总学时是字符串格式,我直接在wps里边进行了批量转换为数据操作,下面一起来看看需求吧。粉丝的需求是根据原始表格,然后填充下表:二、实现过程这里其实使用Excel就可以实现,这里介绍两个方法,......
  • # yyds干货盘点 # 盘点一个Excel表格数据筛选的问题(上篇)
    大家好,我是皮皮。一、前言前几天有粉丝问我Excel数据筛选的问题,原始数据如下图所示,其实一开始的总学时是字符串格式,我直接在wps里边进行了批量转换为数据操作,下面一起来看看需求吧。粉丝的需求是根据原始表格,然后填充下表:二、实现过程这里其实使用Excel就可以实现,这里介绍两个方法,......
  • # yyds干货盘点 # pandas如何将下图这个数据格式,改为%Y-%m-%d这种格式的?
    大家好,我是皮皮。一、前言前几天在Python白银交流群【小王子】问了一个Python日期处理的问题,一起来看看吧。原始数据库中的数据如下所示:二、实现过程这里【袁学东】给了一个方法,代码如下所示:df['日期']=pd.to_datetime(df['日期']).datetime.strftime(‘%Y%m-%d’)顺利地解决了问......
  • LeetCode222.完全二叉树的节点个数
    题目描述给你一棵完全二叉树的根节点root,求出该树的节点个数。完全二叉树的定义如下:在完全二叉树中,除了最底层节点可能没填满外,其余每层节点数都达到最大值,并且最下面一层的节点都集中在该层最左边的若干位置。若最底层为第h层,则该层包含1~2h个节点。示例提交的代......
  • [Leetcode] 0118. 杨辉三角
    118.杨辉三角题目描述给定一个非负整数 numRows,生成「杨辉三角」的前 numRows 行。在「杨辉三角」中,每个数是它左上方和右上方的数的和。 示例1:输入:numRows=5输出:[[1],[1,1],[1,2,1],[1,3,3,1],[1,4,6,4,1]]示例 2:输入:numRows=1输出:[[1]] 提......
  • #yyds干货盘点#React-初始化渲染
    1.环境准备初始化项目:npxcreate-react-appsimple-react删除一些代码,最关键的内容就是:src/index.jspublic/index.htmlpackage.json中的dependencies和scripts:2.JSX介绍JSX是JavaScript的一种语法扩展。JSX到普通Javascript的代码的转化是通过babel完成的。3.React.createElement编......