当前位置: 首页 > news >正文

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; } }
http://www.jsqmd.com/news/343020/

相关文章:

  • 从入门到精通:Boris Cherny 亲测的 Claude Code 十大高级技巧 + 插件实操(万字详解)
  • 大数据毕设项目推荐-基于hadoop的气象数据分析与可视化系统基于python+Hadoop的国家气象降雨量大数据分析系统【附源码+文档,调试定制服务】
  • axios和jsdom的碰撞
  • 计算机大数据毕设实战-基于python+Hadoop的国家气象降雨量大数据分析系统气象数据可视化平台【完整源码+LW+部署说明+演示视频,全bao一条龙等】
  • 8-4 WPS JS宏 new RegExp()、test()、exec()正则表达式的创建与使用
  • 【课程设计/毕业设计】基于大数据的多维度气象数据的可视化分析系统基于python+Hadoop的国家气象降雨量大数据分析系统【附源码、数据库、万字文档】
  • 基于STM32F103驱动QMI8658A输出加速度陀螺仪数据
  • JVM面试必背专题(2026最新版):从基础到高版本,一文吃透所有核心考点
  • 【无人机协同路径规划】基于六种最新优化算法(CCO、TOC、MSO、DOA、GOA、OX)求解多个无人机协同路径规划,可以自定义无人机数量及起始点附Matlab代码
  • 【课程设计/毕业设计】基于Hadoop的某篮球队各个球员数据分析数据可视化系统实现【附源码、数据库、万字文档】
  • 【开题答辩全过程】以 工业车辆维修APP设计与实现为例,包含答辩的问题和答案
  • 数据库全解析:从关系型到向量数据库,LLM 开发中的选型指南
  • 计算机毕业设计springboot任我听——音乐推荐系统的开发 基于 SpringBoot 的 “随心听” 个性化音乐推荐平台开发 SpringBoot 框架下智能音乐推荐系统 “乐伴听” 的设计
  • 大数据计算机毕设之基于python+Hadoop的国家气象降雨量大数据分析系统基于大数据的多维度气象数据的可视化分析系统(完整前后端代码+说明文档+LW,调试定制等)
  • 计算机大数据毕设实战-基于Hadoop的某篮球队各个球员数据分析系统的设计与实现【完整源码+LW+部署说明+演示视频,全bao一条龙等】
  • 计算机毕业设计springboot基于的药品管理系统的设计与实现 基于 SpringBoot 框架的医药库存管理系统设计与实现 SpringBoot 技术下的药品进销存管理系统开发与应用
  • 来数独 - LaiSudo
  • 人形机器人日报|摩根士丹利预测2026年销量暴涨133%,中国供应链领跑全球
  • 基于Springboot+Vue的校园设备维护报修系统源码文档部署文档代码讲解等
  • C++游戏开发之旅 8
  • 【开题答辩全过程】以 基于Springboot个人健康运动系统的设计与实现为例,包含答辩的问题和答案
  • 大数据计算机毕设之基于Hadoop的某篮球队各个球员数据分析系统的设计与实现(完整前后端代码+说明文档+LW,调试定制等)
  • AI大模型应用开发学习路线:从后端转型到AI开发,2026最新!
  • 【毕业设计】基于Hadoop的某篮球队各个球员数据分析系统的设计与实现(源码+文档+远程调试,全bao定制等)
  • 【开题答辩全过程】以 基于python的游戏管理平台的开发为例,包含答辩的问题和答案
  • Excel时间与日期文本转化利器:深度解析TIMEVALUE与DATEVALUE函数实战应用
  • 使用 Pydantic 与 JSON Schema 验证 JSONL
  • ​孙焕泉-播报编辑讨论5上传视频创建人物关系中国工程院院士,石油与天然气开发工程专家​——太能干了
  • 价值投资中的合成食品技术趋势
  • jsp二手交易平台设计与开发woe47--程序+源码+数据库+调试部署+开发环境