package Array
import (
"cmp"
"slices"
)
func merge(intervals [][]int) [][]int {
slices.SortFunc(intervals, func(a, b []int) int {
return cmp.Compare(a[0], b[0])
})
result := make([][]int, 0)
curStart := intervals[0][0]
curEnd := intervals[0][1]
for i := 0; i < len(intervals); i++ {
if curEnd >= intervals[i][0] {
curEnd = max(curEnd, intervals[i][1])
} else {
result = append(result, []int{curStart, curEnd})
curStart = intervals[i][0]
curEnd = intervals[i][1]
}
}
result = append(result, []int{curStart, curEnd})
return result
}