news 2026/4/23 12:52:01

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/23 11:19:12

基于Springboot+Vue的校园闲置物品租售系统源码文档部署文档代码讲解等

课题介绍 本课题旨在设计并实现一套基于SpringBootVue的前后端分离校园闲置物品租售系统&#xff0c;解决校园内学生闲置物品浪费、租售渠道分散、交易安全无保障、物品信息杂乱、租赁流程不规范等问题。系统采用SpringBoot作为后端核心框架&#xff0c;结合MyBatis-Plus简化数…

作者头像 李华
网站建设 2026/4/23 9:54:19

基于Springboot+Vue的新能源汽车租赁管理系统源码文档部署文档代码讲解等

课题介绍 本课题旨在设计并实现一套基于SpringBootVue的前后端分离新能源汽车租赁管理系统&#xff0c;解决传统汽车租赁流程繁琐、车辆信息管理混乱、订单跟踪不及时、租赁统计效率低、车辆状态监控不便等问题。系统采用SpringBoot作为后端核心框架&#xff0c;结合MyBatis-Pl…

作者头像 李华
网站建设 2026/4/23 9:53:38

Data Management Processing

1. Backup 备份Explanation: A backup is a copy of data or files that is stored separately from the original source, often used to prevent data loss in case of 万一 system failure, corruption, or accidental deletion.备份是数据或文件的副本&#xff0c;通常存储…

作者头像 李华
网站建设 2026/4/23 11:16:59

easymall---管理后端商品属性管理

需求: 这是前端的页面,约定为前端将信息包装成sysProductProperty类进行返回,要怎么设计表以及实体类 1.建立sysproductProperty表 需要property_id作为主键 标识这个属性 是否包含图片那就需要一个 cover_type 存储 具体的图片存储放在本地的某一文件夹中 不通过数据库保存…

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

stm32的ADC模块在进行单通道ADC测量时,悬空接地电压在OLED显示屏上显示为3.3V,而不是实际的电压值,如何解决?

&#x1f3c6;本文收录于 《全栈 Bug 调优&#xff08;实战版&#xff09;》 专栏。专栏聚焦真实项目中的各类疑难 Bug&#xff0c;从成因剖析 → 排查路径 → 解决方案 → 预防优化全链路拆解&#xff0c;形成一套可复用、可沉淀的实战知识体系。无论你是初入职场的开发者&…

作者头像 李华
网站建设 2026/4/23 11:22:04

大数据时代下 Kafka 的核心原理深度剖析

大数据时代下 Kafka 的核心原理深度剖析 关键词&#xff1a;Kafka、消息队列、分布式架构、分区副本、实时数据流 摘要&#xff1a;在大数据时代&#xff0c;企业每天要处理数以亿计的实时数据&#xff08;如用户点击、传感器信号、交易记录&#xff09;。传统消息系统在吞吐量…

作者头像 李华