Skip to content

Commit 5e248e5

Browse files
authored
Update Solution.js
1 parent c7bbaf8 commit 5e248e5

File tree

1 file changed

+20
-22
lines changed
  • solution/1800-1899/1870.Minimum Speed to Arrive on Time

1 file changed

+20
-22
lines changed

solution/1800-1899/1870.Minimum Speed to Arrive on Time/Solution.js

Lines changed: 20 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -4,29 +4,27 @@
44
* @return {number}
55
*/
66
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;
1425
} else {
15-
left = mid + 1;
26+
l = mid + 1;
1627
}
1728
}
18-
return left;
29+
return l > m ? -1 : l;
1930
};
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-
}

0 commit comments

Comments
 (0)