news 2026/4/16 8:29:06

D.二分查找-二分答案-求最小——1870. 准时到达的列车最小时速

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
D.二分查找-二分答案-求最小——1870. 准时到达的列车最小时速

题目链接:1870. 准时到达的列车最小时速(中等)

算法原理:

解法:二分查找

50ms击败73.54%

时间复杂度O(n × log(max_speed))(n 是 dist 数组长度,max_speed ≈ 10^9

题目有两个变化的条件:时速和时间,且呈负相关单调:时速↑ 花费时间↓ 由于要找最小时速,属于在二分区间最左端点,因此采用最左端点模型

①目标变量:时速

②目标条件:经过n趟车后花费的总时间<=hour

③转换逻辑:n趟车按此时速行驶后花费多少时间

具体步骤:

①确定区间边界:

left:1,因为题目规定了hour≥1,如果初始化为0,相当于原地不动了

right:10⁷,因为题目明确说了“测试用例保证答案不超过 10⁷”

②确定模型:呈负相关单调:时速↑ 花费时间↓,题目要求返回最小正整数时速,因此采用最左端点模型,注意虽然时间是double类型的,但却不是浮点二分,因为咱们要返回的是时速,题目要求最小正整数,时间的double是用来判断时速是否符合要求的

③check方法设计:累加各趟车需要花费的时间,注意前n-1趟车的时间需要向上取整,因为题目说了,每趟列车只在整点发车,而向上取整的公式在下面这篇博客应用过👇

第 175 场双周赛Q2——3824. 减小数组使其满足条件的最小 K 值

直接拿来用就可以,最后一趟车的时间直接累加,无需向上取整,如果时间太长,超过了hour,说明时速太慢,需要提速,向右调整,因此返回true

④无法准时到达的情况:由于每趟车只在整点发车,不管你跑多快,都得等到整点走,因此最快的情况也得是dist.length-1个小时,如果hour比这个小,那么一定无法到达,返回-1

Java代码:

class Solution { public int minSpeedOnTime(int[] dist, double hour) { int left=1,right=10_000_000; //边界预处理:每段至少一小时,若hour不够直接返回-1 if(hour<=dist.length-1) return -1; while(left<right){ int mid=left+(right-left)/2; if(check(mid,dist,hour)) left=mid+1; else right=mid; } return left; } private boolean check(int mid,int[] dist, double hour){ double time=0; int n=dist.length; for(int i=0;i<n;i++){ //只有前n-1段需要向上取整,最后一段直接累加 if(i!=n-1) time+=(double)((dist[i]-1)/mid+1); else time+=(double)dist[i]/mid; //如果超时了,说明速度太慢,要提速,向右移动,所以返回true if(time>hour) return true; } return time>hour; } }
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/13 9:44:22

SpringCloud从入门到上天:Nacos做微服务注册中心

什么叫服务注册&#xff1a; 商品服务、订单服务、各种服务启动之后都会注册到注册中心当中&#xff0c;注册中心中维护了一个微服务与他所在物理机的关系映射。 什么叫服务发现&#xff1a; 微服务之间进行远程调用的时候&#xff0c;需要首先问下注册中心目标服务的位…

作者头像 李华
网站建设 2026/4/5 16:43:58

SSM校园学生管理系统wq871(程序+源码+数据库+调试部署+开发环境)

本系统&#xff08;程序源码数据库调试部署开发环境&#xff09;带论文文档1万字以上&#xff0c;文末可获取&#xff0c;系统界面在最后面。 系统程序文件列表 开题报告内容 一、研究背景 随着信息技术的快速发展和教育信息化进程的推进&#xff0c;传统的学生管理方式已难…

作者头像 李华
网站建设 2026/4/11 21:01:40

小白入门大模型:从零到一掌握底层原理,一文搞懂什么是大模型

文章介绍了大模型的定义、特点及工作原理。大模型通过学习海量数据具备通用能力&#xff0c;其"大"体现在数据量、算力、参数规模、通用性和维度上。基于Token预测和自回归机制工作&#xff0c;本质是超高维数学函数。作者用通俗易懂的方式&#xff0c;帮助非技术背景…

作者头像 李华
网站建设 2026/4/13 0:46:06

4653788

456388

作者头像 李华