給出每個office的距離,以及需要再hour時間內依次去到所有office,去每個office的時間是dis[i]/hour向上取整,二分,注意r要開大點,以及一開始要特判無論多塊都無法按時arrive的情況
#852
#Runtime: 2487 ms (Beats 90.91%)
#Memory: 25 MB (Beats 72.73%)
class Solution(object):
def minSpeedOnTime(self, dist, hour):
"""
:type dist: List[int]
:type hour: float
:rtype: int
"""
eps = 1e-6
l, r = 1, 1000000000
if hour <= len(dist) - 1:
return -1
while l < r:
mid = (l + r) // 2
t = 0
for x in dist[:-1]:
t += x // mid
if x % mid:
t += 1
t += 1.0 * dist[-1] / mid
if t <= hour:
r = mid
else:
l = mid + 1
return l