题目:原题链接(中等)
标签:二分查找、数学
解法 | 时间复杂度 | 空间复杂度 | 执行用时 |
---|---|---|---|
Ans 1 (Python) | O ( N l o g K ) O(NlogK) O(NlogK) | O ( 1 ) O(1) O(1) | 2260ms (16.67%) |
Ans 2 (Python) | |||
Ans 3 (Python) |
解法一:
class Solution:
def minSpeedOnTime(self, dist: List[int], hour: float) -> int:
left, right = 1, 10 ** 7 + 1
while left < right:
mid = (left + right) // 2
time = 0
for d in dist:
time = ceil(time)
time += d / mid
# print(mid, ":", time)
# 速度快了
if time <= hour:
right = mid
# 速度慢了
elif time > hour:
left = mid + 1
return left if left < 10 ** 7 + 1 else -1