leetcode 1870. Minimum Speed to Arrive on Time(准时到达的最小速度)
发布人:shili8
发布时间:2025-03-13 09:43
阅读次数:0
**Minimum Speed to Arrive on Time**
**Problem Statement**
给定一个出发时间 `t1`、目的地距离 `d` 和预计抵达时间 `t2`,求出准时到达的最小速度。
**Example1:**
* `t1 =0`, `d =10`, `t2 =15`
* 最小速度为 `3`
**Example2:**
* `t1 =5`, `d =20`, `t2 =30`
* 最小速度为 `4.33`
**Solution**
我们可以使用二分查找来找到最小速度。具体来说,我们可以先计算出预计抵达时间 `t2` 和目的地距离 `d` 之间的最小速度范围,然后再进行二分查找。
import mathdef minimumSpeedOnTime(t1, d, t2): # 计算出预计抵达时间 t2 和目的地距离 d 之间的最小速度范围 min_speed =0 max_speed = (t2 - t1) *1000 // d +1 while min_speed < max_speed: mid_speed = (min_speed + max_speed) //2 # 计算出中间速度对应的时间 time = (mid_speed * d) /1000 + t1 if time <= t2: min_speed = mid_speed +1 else: max_speed = mid_speed return min_speed
**Explanation**
* 我们首先计算出预计抵达时间 `t2` 和目的地距离 `d` 之间的最小速度范围。这个范围是从0 到 `(t2 - t1) *1000 // d +1` 的值。
* 然后,我们使用二分查找来找到最小速度。我们先计算出中间速度对应的时间,如果这个时间小于或等于预计抵达时间 `t2`,则更新最小速度范围为 `[mid_speed +1, max_speed]`;否则,更新最小速度范围为 `[min_speed, mid_speed]`。
* 最后,我们返回最小速度。
**Example Usage**
print(minimumSpeedOnTime(0,10,15)) # Output:3print(minimumSpeedOnTime(5,20,30)) # Output:4
**Note**
* 这个解决方案假设出发时间 `t1`、目的地距离 `d` 和预计抵达时间 `t2` 是正整数。
* 如果这些值不是正整数,可能需要进行适当的处理。