30 lines
621 B
Go
30 lines
621 B
Go
package q57
|
|
|
|
func insert(intervals [][]int, newInterval []int) [][]int {
|
|
ret := make([][]int, 0, len(intervals)+1)
|
|
|
|
i := 0
|
|
for ; i < len(intervals) && intervals[i][0] <= newInterval[0]; i++ {
|
|
ret = append(ret, intervals[i])
|
|
}
|
|
|
|
if len(ret) > 0 && ret[len(ret)-1][1] >= newInterval[0] {
|
|
ret[len(ret)-1][1] = max(ret[len(ret)-1][1], newInterval[1])
|
|
} else {
|
|
ret = append(ret, newInterval)
|
|
}
|
|
|
|
for ; i < len(intervals); i++ {
|
|
last := ret[len(ret)-1]
|
|
next := intervals[i]
|
|
if last[1] >= next[0] {
|
|
last[1] = max(last[1], next[1])
|
|
} else {
|
|
ret = append(ret, next)
|
|
}
|
|
}
|
|
|
|
return ret
|
|
}
|
|
|
|
var _ = insert
|