Leetcode 1870 - Minimum Speed to Arrive on Time

題目

Problem#

可以花 hour 小時通勤到辦公室,必須要按照順序搭繩 n 輛火車,並給你 dist[i] 長度 n 代表第 i 輛火車要搭幾公里
每輛列車必須在整點出發,問你能不能回傳一個最小的速度搭完所有的火車,回傳 -1 代表不可能準時到達。

測資限制#

  • $1 \le n \le 10^5$
  • $1 \le dist[i] \le 10^5$
  • $1 \le hour \le 10^9$
  • 保證答案不超過 $10^7$,且 hour 會給到小數第二位

想法#

對於速度 $i$ 來說,我們可以求出在這個速度下要花多久時間才能搭完全部的車站 $f(i)$
接著可以發現如果從可以到達與否的角度來看 $i$ 的話,當 $f(i) <= \text{hour}$ 的時候,代表可以準時到達
可以發現我們要找的就是第一個 OK 的速度,二分答案

1
2
3
4
5
6
7
// 第二個範例輸入
1 6.00 NG
2 4.00 NG
3 2.67 OK
4 2.50 OK
5 2.40 OK
6 2.33 OK
  • 時間複雜度: $\mathcal{O}(\log{n})$
  • 空間複雜度: $\mathcal{O}(1)$

AC Code#