Skip to content

Commit 1603aba

Browse files
authored
feat: add javascript solution to lc problem: No.1870.Minimum Speed to Arrive on Time (doocs#403)
1 parent a6565b6 commit 1603aba

File tree

3 files changed

+103
-0
lines changed

3 files changed

+103
-0
lines changed

solution/1800-1899/1870.Minimum Speed to Arrive on Time/README.md

+36
Original file line numberDiff line numberDiff line change
@@ -129,6 +129,42 @@ class Solution {
129129
}
130130
```
131131

132+
### **JavaScript**
133+
134+
```js
135+
/**
136+
* @param {number[]} dist
137+
* @param {number} hour
138+
* @return {number}
139+
*/
140+
var minSpeedOnTime = function(dist, hour) {
141+
if (dist.length > Math.ceil(hour)) return -1;
142+
let left = 1, right = 10 ** 7;
143+
while (left < right) {
144+
let mid = (left + right) >> 1;
145+
if (arriveOnTime(dist, mid, hour)) {
146+
right = mid;
147+
} else {
148+
left = mid + 1;
149+
}
150+
}
151+
return left;
152+
};
153+
154+
function arriveOnTime (dist, speed, hour) {
155+
let res = 0.0;
156+
let n = dist.length;
157+
for (let i = 0; i < n; i++) {
158+
let cost = parseFloat(dist[i]) / speed;
159+
if (i != n - 1) {
160+
cost = Math.ceil(cost);
161+
}
162+
res += cost;
163+
}
164+
return res <= hour;
165+
}
166+
```
167+
132168
### **...**
133169

134170
```

solution/1800-1899/1870.Minimum Speed to Arrive on Time/README_EN.md

+36
Original file line numberDiff line numberDiff line change
@@ -117,6 +117,42 @@ class Solution {
117117
}
118118
```
119119

120+
### **JavaScript**
121+
122+
```js
123+
/**
124+
* @param {number[]} dist
125+
* @param {number} hour
126+
* @return {number}
127+
*/
128+
var minSpeedOnTime = function(dist, hour) {
129+
if (dist.length > Math.ceil(hour)) return -1;
130+
let left = 1, right = 10 ** 7;
131+
while (left < right) {
132+
let mid = (left + right) >> 1;
133+
if (arriveOnTime(dist, mid, hour)) {
134+
right = mid;
135+
} else {
136+
left = mid + 1;
137+
}
138+
}
139+
return left;
140+
};
141+
142+
function arriveOnTime (dist, speed, hour) {
143+
let res = 0.0;
144+
let n = dist.length;
145+
for (let i = 0; i < n; i++) {
146+
let cost = parseFloat(dist[i]) / speed;
147+
if (i != n - 1) {
148+
cost = Math.ceil(cost);
149+
}
150+
res += cost;
151+
}
152+
return res <= hour;
153+
}
154+
```
155+
120156
### **...**
121157

122158
```
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
/**
2+
* @param {number[]} dist
3+
* @param {number} hour
4+
* @return {number}
5+
*/
6+
var minSpeedOnTime = function(dist, hour) {
7+
if (dist.length > Math.ceil(hour)) return -1;
8+
let left = 1, right = 10 ** 7;
9+
while (left < right) {
10+
let mid = (left + right) >> 1;
11+
if (arriveOnTime(dist, mid, hour)) {
12+
right = mid;
13+
} else {
14+
left = mid + 1;
15+
}
16+
}
17+
return left;
18+
};
19+
20+
function arriveOnTime (dist, speed, hour) {
21+
let res = 0.0;
22+
let n = dist.length;
23+
for (let i = 0; i < n; i++) {
24+
let cost = parseFloat(dist[i]) / speed;
25+
if (i != n - 1) {
26+
cost = Math.ceil(cost);
27+
}
28+
res += cost;
29+
}
30+
return res <= hour;
31+
}

0 commit comments

Comments
 (0)