
步骤
- 排序,按照第一个元素从大到小排序
- a, b 储存一个区间,如果
v[0] <= b
则 再判断 v[1] > b
,如果再次满足条件,则更新 a, b 所表示的区间
- 如果
v[0] <= b
条件不满足,则说明当前区间已经覆盖完全,无需更新,将这个区间计入 ans
- 当然,最后记得将最后一个 a, b 区间导入 ans
func merge(intervals [][]int) [][]int {
sort.Slice(intervals, func(i, j int) bool {
return intervals[i][0] < intervals[j][0]
})
ans := [][]int{}
a, b := intervals[0][0], intervals[0][1]
for _, v := range intervals {
if v[0] <= b {
if v[1] > b {
b = v[1]
}
}else {
ans = append(ans, []int{a, b})
a, b = v[0], v[1]
}
}
ans = append(ans, []int{a, b})
return ans
}