当前位置:实例文章 » JAVA Web实例» [文章]leetcode 1870. Minimum Speed to Arrive on Time(准时到达的最小速度)

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` 是正整数。
* 如果这些值不是正整数,可能需要进行适当的处理。

其他信息

其他资源

Top