【LeetCode】每日一题 2024_10_2 准时到达的列车最小时速(二分答案)

前言

每天和你一起刷 LeetCode 每日一题~

大家国庆节快乐呀~

LeetCode 启动!

题目:准时到达的列车最小时速

代码与解题思路

今天这道题是经典的二分答案,结合这道题来讲就是,二分列车的速度

我最擅长的两个算法:一个是二分,一个是滑动窗口,那趁着今天的题目是二分相关,就顺便分享一下我用的二分模版

整数二分模板

模板一:用于左半区间不存在答案,而右半区间存在答案的情况,也就是在 left,mid , mid + 1,right

C++ 版本

cpp 复制代码
int l = 0, r = n - 1;
while (l < r) {
    int mid = l + r >> 1;
    if (check(mid)) r = mid;
    else l = mid + 1;
}

Golang 版本

go 复制代码
l, r := 0, len(nums)-1
for l < r {
    mid := l+(r-l)/2
    if check(mid) {
        r = mid
    } else {
        l = mid + 1
    }
}

模板二:用于左半区间存在答案,而右半区间不存在答案的情况,也就是在 left,mid - 1 , mid,right

C++ 版本

cpp 复制代码
 int l = 0, r = n - 1;
 while (l < r) {
     int mid = l + r + 1 >> 1;
     if (check(mid)) l = mid;
     else r = mid - 1;
 }

Golang 版本

go 复制代码
l, r = 0, len(nums)-1
for l < r {
    mid := l+(r-l+1)/2
    if check(mid) {
        l = mid 
    } else {
        r = mid - 1
    }
}

模板记忆方法:有 - 1,那求 mid 的时候就需要 + 1


这两个模板包含了整数二分的所有情况,至少我到现在还没有碰到这两个模板解决不了的整数二分题目,当然,模版只是模版,多练习题目才是提升算法能力的王道

不妨就用今天的题目来试试我这个模版吧~

go 复制代码
func minSpeedOnTime(dist []int, hour float64) int {
	length := len(dist)
	check := func(speed float64) bool {
		var cost float64
		for _, v := range dist[:length-1] {
			cost += math.Ceil(float64(v) / speed) // 上取整
		}
		cost += float64(dist[length-1]) / speed // 最后一趟不用取整
		return cost <= hour // 能准时到达就返回 true
	}

	if hour <= float64(length-1) { // 最短一个小时一趟车,车次超过最短时间直接返回 -1
		return -1
	}

	left, right := 1, 10000000
	for left < right {
		mid := (left + right) / 2
		if check(float64(mid)) {
			right = mid
		} else { // 不能准时到达,让 speed 增大
			left = mid + 1
		}
	}
	return left
}

视频实况

【【LeetCode】每日一题 2024_10_2 准时到达的列车最小时速(二分答案)】

每天进步一点点

可以和我刷一辈子的每日一题吗?

一题一题,积累起来就是一辈子。

相关推荐
2601_949950632 小时前
练题簿在线免费刷题 从资料整理到考前自测
面试·职场和发展·pdf·word·刷题
hetao17338372 小时前
2026-10-03~04 hetao1733837 的刷题记录
c++·算法
Zootopia6263 小时前
飞行力学知识梳理1|飞行性能与稳定性
人工智能·python·算法·机器学习·无人机·学习方法·信息与通信
longlongzihan3 小时前
从LeetCode 70. 爬楼梯看动态规划:如何精准推导状态转移方程?
c++·算法·leetcode·动态规划
2601_960356384 小时前
2027校招采购岗解析:数学基础如何迁移到需求预测、成本与供应商分析
人工智能·算法
h_a_o777oah5 小时前
【树论】树链剖分:将树形结构转化为线性结构以处理树上路径问题(洛谷 P3384 附C++代码模板)
数据结构·算法·线段树·acm·树链剖分·树论·重链剖分
HEJOO95 小时前
指针的算术运算详解
java·数据结构·算法
Coder-magician5 小时前
《代码随想录》刷题打卡day47:并查集-part01
数据结构·算法·图论
lsc_blog5 小时前
远程和居家办公的经历,技术简历上怎么摆
面试·职场和发展·重构·pdf·求职招聘
垆边人似月.5 小时前
VLAN 资源池(100~200 分档)
数据结构·算法