1870. Minimum Speed to Arrive on Time (Medium) - TengnanYao/daily_leetcode GitHub Wiki
class Solution(object):
def minSpeedOnTime(self, dist, hour):
"""
:type dist: List[int]
:type hour: float
:rtype: int
"""
result = -1
def helper(dist, speed):
res = 0
for d in dist[ : len(dist) - 1]:
res += ceil(d * 1.0 / speed)
res += dist[-1] * 1.0 / speed
return res
l, r = 1, max(dist) * 100
if helper(dist, r) > hour:
return -1
while l <= r:
m = (l + r) // 2
time = helper(dist, m)
if time == hour:
return m
elif time < hour:
r = m - 1
else:
l = m + 1
return l