1870. 准时到达的列车最小时速
最后更新于
最后更新于
输入:dist = [1,3,2], hour = 6
输出:1
解释:速度为 1 时:
- 第 1 趟列车运行需要 1/1 = 1 小时。
- 由于是在整数时间到达,可以立即换乘在第 1 小时发车的列车。第 2 趟列车运行需要 3/1 = 3 小时。
- 由于是在整数时间到达,可以立即换乘在第 4 小时发车的列车。第 3 趟列车运行需要 2/1 = 2 小时。
- 你将会恰好在第 6 小时到达。输入:dist = [1,3,2], hour = 2.7
输出:3
解释:速度为 3 时:
- 第 1 趟列车运行需要 1/3 = 0.33333 小时。
- 由于不是在整数时间到达,故需要等待至第 1 小时才能搭乘列车。第 2 趟列车运行需要 3/3 = 1 小时。
- 由于是在整数时间到达,可以立即换乘在第 2 小时发车的列车。第 3 趟列车运行需要 2/3 = 0.66667 小时。
- 你将会在第 2.66667 小时到达。输入:dist = [1,3,2], hour = 1.9
输出:-1
解释:不可能准时到达,因为第 3 趟列车最早是在第 2 小时发车。func minSpeedOnTime(dist []int, hour float64) int {
if hour <= float64(len(dist)-1) {
return -1
}
check := func(velocity int) bool {
var time float64
for _, s := range dist {
time = math.Ceil(time)
time += float64(s) / float64(velocity)
}
return time <= hour
}
vmin, vmax := 1, 10000000
for vmin < vmax {
mid := vmin + (vmax - vmin) >> 1
if check(mid) {
vmax = mid
} else {
vmin = mid + 1
}
}
return vmin
}