func merge(intervals [][]int) [][]int {
var res [][]int
// 按左区间从小到大排序
sort.Slice(intervals, func(i, j int) bool {
return intervals[i][0] < intervals[j][0]
})
res = append(res, intervals[0])
for i := 1; i < len(intervals); i++ {
start := intervals[i][0]
end := intervals[i][1]
// 重叠-合并
if start <= res[len(res)-1][1] {
if end > res[len(res)-1][1] {
res[len(res)-1][1] = end
}
} else {
// 不重叠,记录
res = append(res, []int{start, end})
}
}
return res
}