Minimum Speed to Arrive on Time LeetCode solution in C++

1
class Solution {
2
bool canReachInTime(const vector<int> &dist, const double hour, int speed) {
3
double time = 0;
4
for (int i = 0; i < dist.size() - 1; ++i) time += ((dist[i] + speed - 1) / speed);
5

6
time += ((double)dist.back()) / speed;
7
return time <= hour;
8
}
9

10
public:
11
int minSpeedOnTime(vector<int> &dist, double hour) {
12
int N = dist.size();
13
if (hour <= (double)(N - 1)) return -1;
14

15
int lo = 1, hi = 1e7, mi;
16
while (lo < hi) {
17
mi = (lo + hi) / 2;
18
if (canReachInTime(dist, hour, mi))
19
hi = mi;
20
else
21
lo = mi + 1;
22
}
23

24
return hi;
25
}
26
};

0

WPM •0 •0

100%

ACC •0 •0

0s

TIME •0