File tree Expand file tree Collapse file tree 1 file changed +20
-22
lines changed
solution/1800-1899/1870.Minimum Speed to Arrive on Time Expand file tree Collapse file tree 1 file changed +20
-22
lines changed Original file line number Diff line number Diff line change 4
4
* @return {number }
5
5
*/
6
6
var minSpeedOnTime = function ( dist , hour ) {
7
- if ( dist . length > Math . ceil ( hour ) ) return - 1 ;
8
- let left = 1 ,
9
- right = 10 ** 7 ;
10
- while ( left < right ) {
11
- let mid = ( left + right ) >> 1 ;
12
- if ( arriveOnTime ( dist , mid , hour ) ) {
13
- right = mid ;
7
+ if ( dist . length > Math . ceil ( hour ) ) {
8
+ return - 1 ;
9
+ }
10
+ const n = dist . length ;
11
+ const m = 10 ** 7 ;
12
+ const check = v => {
13
+ let s = 0 ;
14
+ for ( let i = 0 ; i < n ; ++ i ) {
15
+ const t = dist [ i ] / v ;
16
+ s += i === n - 1 ? t : Math . ceil ( t ) ;
17
+ }
18
+ return s <= hour ;
19
+ } ;
20
+ let [ l , r ] = [ 1 , m + 1 ] ;
21
+ while ( l < r ) {
22
+ const mid = ( l + r ) >> 1 ;
23
+ if ( check ( mid ) ) {
24
+ r = mid ;
14
25
} else {
15
- left = mid + 1 ;
26
+ l = mid + 1 ;
16
27
}
17
28
}
18
- return left ;
29
+ return l > m ? - 1 : l ;
19
30
} ;
20
-
21
- function arriveOnTime ( dist , speed , hour ) {
22
- let res = 0.0 ;
23
- let n = dist . length ;
24
- for ( let i = 0 ; i < n ; i ++ ) {
25
- let cost = dist [ i ] / speed ;
26
- if ( i != n - 1 ) {
27
- cost = Math . ceil ( cost ) ;
28
- }
29
- res += cost ;
30
- }
31
- return res <= hour ;
32
- }
You can’t perform that action at this time.
0 commit comments