Skip to content

Commit 9ec2933

Browse files
committed
feat: add kotlin solution to lc problem: No.1870
1 parent 0b032a2 commit 9ec2933

File tree

3 files changed

+85
-0
lines changed

3 files changed

+85
-0
lines changed

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

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -312,6 +312,36 @@ var minSpeedOnTime = function (dist, hour) {
312312
};
313313
```
314314

315+
#### Kotlin
316+
317+
```kotlin
318+
class Solution {
319+
fun minSpeedOnTime(dist: IntArray, hour: Double): Int {
320+
val n = dist.size
321+
if (n > Math.ceil(hour)) {
322+
return -1
323+
}
324+
val m = 1e7.toInt()
325+
var left = 1
326+
var right = m + 1
327+
while (left < right) {
328+
val middle = (left + right) / 2
329+
var time = 0.0
330+
dist.forEachIndexed { i, item ->
331+
val t = item.toDouble() / middle
332+
time += if (i == n - 1) t else Math.ceil(t)
333+
}
334+
if (time > hour) {
335+
left = middle + 1
336+
} else {
337+
right = middle
338+
}
339+
}
340+
return if (left > m) -1 else left
341+
}
342+
}
343+
```
344+
315345
<!-- tabs:end -->
316346

317347
<!-- solution:end -->

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

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -312,6 +312,36 @@ var minSpeedOnTime = function (dist, hour) {
312312
};
313313
```
314314

315+
#### Kotlin
316+
317+
```kotlin
318+
class Solution {
319+
fun minSpeedOnTime(dist: IntArray, hour: Double): Int {
320+
val n = dist.size
321+
if (n > Math.ceil(hour)) {
322+
return -1
323+
}
324+
val m = 1e7.toInt()
325+
var left = 1
326+
var right = m + 1
327+
while (left < right) {
328+
val middle = (left + right) / 2
329+
var time = 0.0
330+
dist.forEachIndexed { i, item ->
331+
val t = item.toDouble() / middle
332+
time += if (i == n - 1) t else Math.ceil(t)
333+
}
334+
if (time > hour) {
335+
left = middle + 1
336+
} else {
337+
right = middle
338+
}
339+
}
340+
return if (left > m) -1 else left
341+
}
342+
}
343+
```
344+
315345
<!-- tabs:end -->
316346

317347
<!-- solution:end -->
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
class Solution {
2+
fun minSpeedOnTime(dist: IntArray, hour: Double): Int {
3+
val n = dist.size
4+
if (n > Math.ceil(hour)) {
5+
return -1
6+
}
7+
val m = 1e7.toInt()
8+
var left = 1
9+
var right = m + 1
10+
while (left < right) {
11+
val middle = (left + right) / 2
12+
var time = 0.0
13+
dist.forEachIndexed { i, item ->
14+
val t = item.toDouble() / middle
15+
time += if (i == n - 1) t else Math.ceil(t)
16+
}
17+
if (time > hour) {
18+
left = middle + 1
19+
} else {
20+
right = middle
21+
}
22+
}
23+
return if (left > m) -1 else left
24+
}
25+
}

0 commit comments

Comments
 (0)