LeetCode 475. 供暖器(双指针二分查找)

文章目录

    • 1. 题目
    • 2. 解题
      • 2.1 双指针
      • 2. 二分查找

1. 题目

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

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

所以,你的输入将会是房屋和供暖器的位置。你将输出供暖器的最小加热半径。

说明:
给出的房屋和供暖器的数目是非负数且不会超过 25000。
给出的房屋和供暖器的位置均是非负数且不会超过10^9。
只要房屋位于供暖器的半径内(包括在边缘上),它就可以得到供暖。
所有供暖器都遵循你的半径标准,加热的半径也一样。

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

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/heaters
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

2. 解题

2.1 双指针

  • 将两个数组都排序(为方便处理边界,在排序前,向供热站里加入正负极限值)
  • 设置两个指针指向房屋的起点,和供热站的起点
  • 如果房屋在两个供热站之间,取较小的距离,最后答案是所有的较小距离的最大值
class Solution {
public:int findRadius(vector<int>& houses, vector<int>& heaters) {sort(houses.begin(),houses.end());//为处理边界方便,增加两个虚拟无穷远加热站heaters.push_back(INT_MAX);heaters.push_back(-1e9-1);sort(heaters.begin(),heaters.end());int i = 0, j = 0, r = 0;while(i < houses.size()){if(houses[i] >= heaters[j] && houses[i] <= heaters[j+1]){r = max(r,min(houses[i]-heaters[j], heaters[j+1]-houses[i]));++i;}else++j;}return r;}
};

在这里插入图片描述

2. 二分查找

class Solution {
public:int findRadius(vector<int>& houses, vector<int>& heaters) {heaters.push_back(INT_MAX);heaters.push_back(-1e9-1);sort(heaters.begin(),heaters.end());int i = 0, prev, next, r = 0;for(i = 0; i < houses.size(); ++i){prev = 0; next = heaters.size()-1;binarysearch(houses[i],heaters,prev,next);//得到的prev,next为houses[i]后面和前面的供热站位置r = max(r,min(houses[i]-heaters[next], heaters[prev]-houses[i]));}return r;}void binarysearch(int p, vector<int> &heaters, int &i, int &j){int mid;while(i <= j){mid = i+((j-i)>>1);if(p < heaters[mid])j = mid-1;else if(p > heaters[mid])i = mid+1;else{i = j = mid;return;}}}
};

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/478183.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ReactiveCocoa核心元素与信号流

ReactiveCocoa&#xff08;以下简称“RAC”&#xff09;是一个函数响应式编程框架&#xff0c;它能让我们脱离Cocoa API的束缚&#xff0c;给我们提供另外一套编码的思路与可能性&#xff0c;它能在宏观层面上提升代码易读性与稳定性&#xff0c;让程序员写出富有“诗意”的代码…

【安利向】入坑半年的GPU云平台,三分钟训练起飞!xiu~

大家好&#xff0c;我是Joyce&#xff0c;和小瑶一样&#xff0c;也是搞算法的&#xff0c;不过还在学术界摸鱼&#xff0c;偶尔能抓到一条顶会锦鲤&#xff0c;大多数时候&#xff0c;都是一些小鱼小虾&#xff0c;目前已被boss放养&#xff0c;每周组会都是隐形人...转眼&…

rocketQA学习笔记

端到端问答系统 rocketQA 问答技术发展回顾&#xff1a;

开源开放 | 糖尿病知识图谱DiaKG(CCKS2021)

OpenKG地址&#xff1a;http://openkg.cn/dataset/diakg阿里云天池&#xff1a;https://tianchi.aliyun.com/dataset/dataDetail?dataId88836开放许可协议&#xff1a;CC BY-SA 4.0 &#xff08;署名相似共享&#xff09;贡献者&#xff1a;妙健康&#xff08;常德杰、刘朝振、…

LeetCode 501. 二叉搜索树中的众数(中序遍历)

文章目录1. 题目2. 中序遍历1. 题目 给定一个有相同值的二叉搜索树&#xff08;BST&#xff09;&#xff0c;找出 BST 中的所有众数&#xff08;出现频率最高的元素&#xff09;。 假定 BST 有如下定义&#xff1a; 结点左子树中所含结点的值小于等于当前结点的值 结点右子树…

开源开放 | 移动应用知识图谱MAKG(CCKS2021)

OpenKG地址&#xff1a;http://openkg.cn/dataset/makgGitHub地址&#xff1a;https://github.com/Everglow123/MAKGMAKG网站&#xff1a;http://www.makg.com.cn开放许可协议&#xff1a;CC BY-SA 4.0 &#xff08;署名相似共享&#xff09;贡献者&#xff1a;东南大学(周恒、…

恕我直言,你的实验结论可能严重依赖随机数种子!

文 | python编 | 小轶God does not play dice with the universe ......But BERT Does !包括BERT在内的预训练模型已经是现今NLP工作的标配。但你有没有考虑过&#xff0c;这些工作的实验结论可能都是虚假的&#xff1f;在 Bertology 中&#xff0c;大家从 huggingface 上下载 …

Spring MVC注解故障追踪记

Spring MVC是美团点评很多团队使用的Web框架。在基于Spring MVC的项目里&#xff0c;注解的使用几乎遍布在项目中的各个模块&#xff0c;有Java提供的注解&#xff0c;如&#xff1a;Override、Deprecated等&#xff1b;也有Spring提供的注解&#xff0c;如&#xff1a;Control…

LeetCode 951. 翻转等价二叉树(递归)

文章目录1. 题目2. 递归解题1. 题目 我们可以为二叉树 T 定义一个翻转操作&#xff0c;如下所示&#xff1a;选择任意节点&#xff0c;然后交换它的左子树和右子树。 只要经过一定次数的翻转操作后&#xff0c;能使 X 等于 Y&#xff0c;我们就称二叉树 X 翻转等价于二叉树 Y…

开源开放 | 开源大学在线实践数据集及知识图谱MOOPer(CCKS2021)

OpenKG地址&#xff1a;http://openkg.cn/dataset/mooper头歌平台&#xff1a;https://www.educoder.net/ch/rest开放许可协议&#xff1a;CC BY-SA 4.0 &#xff08;署名相似共享&#xff09;贡献者&#xff1a;湖南智擎科技有限公司&#xff08;黄井泉&#xff09;&#xff0…

python实现文件传输

发送者&#xff1a; send_file.py def send_file(filename: str "mytext.txt", testing: bool False) -> None:import socketport 12312 # Reserve a port for your service.sock socket.socket() # Create a socket objecthost socket.gethostname() # …

不同于NLP,数据驱动、机器学习无法攻克NLU,原因有三

文 | Walid S. Saba源 | 机器之心自然语言理解&#xff08;NLU&#xff09;是人工智能的核心课题之一&#xff0c;也被广泛认为是最困难和最具标志性的任务。近年来&#xff0c;机器学习虽然被广泛使用&#xff0c;但是却不能很好的解决自然语言理解问题&#xff0c;其中可能涉…

分布式系统互斥性与幂等性问题的分析与解决

随着互联网信息技术的飞速发展&#xff0c;数据量不断增大&#xff0c;业务逻辑也日趋复杂&#xff0c;对系统的高并发访问、海量数据处理的场景也越来越多。如何用较低成本实现系统的高可用、易伸缩、可扩展等目标就显得越发重要。为了解决这一系列问题&#xff0c;系统架构也…

开源开放 | 多模态实体链接数据集MELBench(CCKS2021)

OpenKG地址&#xff1a;http://openkg.cn/dataset/melbenchGitHub地址&#xff1a;https://github.com/seukgcode/MELBench开放许可协议&#xff1a;CC BY-SA 4.0 &#xff08;署名相似共享&#xff09;贡献者&#xff1a;东南大学&#xff08;汪鹏、周星辰、邓臻凯、李国正、谢…

LeetCode 1219. 黄金矿工(回溯)

文章目录1. 题目2. 回溯DFS解题1. 题目 你要开发一座金矿&#xff0c;地质勘测学家已经探明了这座金矿中的资源分布&#xff0c;并用大小为 m * n 的网格 grid 进行了标注。每个单元格中的整数就表示这一单元格中的黄金数量&#xff1b;如果该单元格是空的&#xff0c;那么就是…

发现一篇专门吐槽 NLP 内卷现状的 ACL 论文 ...

文 | Severus编 | 小轶随着大模型的发展&#xff0c;NLP领域的榜单可说是内卷到了无以复加&#xff0c;现在去浏览各大公开榜单&#xff0c;以至于各个比赛&#xff0c;随处可见BERT、RoBERTa的身影&#xff0c;甚至榜单中见到各大large模型的集成版也并非偶然。在发论文的时候…

大促活动前团购系统流量预算和容量评估

本文整理自美团点评技术沙龙第11期&#xff1a;移动端测试分享。 美团点评技术沙龙由美团点评技术团队主办&#xff0c;每月一期。每期沙龙邀请美团点评及其它互联网公司的技术专家分享来自一线的实践经验&#xff0c;覆盖各主要技术领域。 目前沙龙会分别在北京、上海和厦门等…

论文浅尝 | 融合多层次领域知识的分子图对比学习

笔记整理 | 方尹&#xff0c;浙江大学在读博士&#xff0c;研究方向&#xff1a;图表示学习论文地址&#xff1a;https://arxiv.org/pdf/2106.04509.pdf动机目前基于图的对比学习有以下几个问题&#xff1a;不同领域的图&#xff0c;&#xff08;比如social network和分子图&am…

LeetCode 1028. 从先序遍历还原二叉树(栈)

文章目录1. 题目2. 栈解题1. 题目 我们从二叉树的根节点 root 开始进行深度优先搜索。 在遍历中的每个节点处&#xff0c;我们输出 D 条短划线&#xff08;其中 D 是该节点的深度&#xff09;&#xff0c;然后输出该节点的值。&#xff08;如果节点的深度为 D&#xff0c;则其…

python 怎么将列表中的字典安照某一个key输出到csv,python如何把字典数据存储进csv文件

示例代码 import csv fieldnames["A","B","C"]#数据列名dicts[{A: 1, B: 2, C:3},{A: 2, B: 3, C:4},{A: 3, B: 4, C:5},{A: 4, B: 5, C:6},{A: 5, B: 6, C:7},{A: 9, B: 7, C:8},]with open(test.csv, a, newline,encodingutf_8_sig) as f: wr…