-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy path0057-insert-interval.kt
33 lines (28 loc) · 980 Bytes
/
0057-insert-interval.kt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
class Solution {
private val START = 0
private val END = 1
fun insert(intervals: Array<IntArray>, newInterval: IntArray): Array<IntArray> {
val sorted = mutableListOf<IntArray>()
var inserted = false
for (interval in intervals) {
if (!inserted && newInterval[START] <= interval[START]) {
sorted += newInterval
inserted = true
}
sorted += interval
}
if (!inserted)
sorted += newInterval
val result = mutableListOf<IntArray>()
for (i in sorted.indices) {
val interval = sorted[i]
if (i < sorted.lastIndex && sorted[i + 1][START] <= interval[END]) {
val next = sorted[i + 1]
next[START] = interval[START]
next[END] = maxOf(interval[END], next[END])
} else
result += interval
}
return result.toTypedArray()
}
}