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
| func merge(intervals [][]int) [][]int {
if len(intervals) == 0 {
return [][]int{}
}
sort.Slice(intervals, func(i, j int) bool {
if intervals[i][0] != intervals[j][0] {
return intervals[i][0] < intervals[j][0]
}
return intervals[i][1] < intervals[j][1]
})
res := make([][]int, 0, len(intervals))
start, end := intervals[0][0], intervals[0][1]
for i := 1; i < len(intervals); i ++ {
s, e := intervals[i][0], intervals[i][1]
if s <= end {
if e > end {
end = e
}
} else {
res = append(res, []int{start, end})
start, end = s, e
}
}
res = append(res, []int{start, end})
return res
}
|