
方法
- sort.Slice 进行排序,规则func为,比较切片的第一个元素,从小到大排序
- 排序之后将第一切片加入到ans中
- for range ins,遍历
- 拿ans尾部切片的第一个元素与遍历的下一个v比较
- 如果比v[0]大,那么就意味着此时的ans尾部元素可以合并下一个元素,然后取 max(ans[ll-1][1],v[1]),然后与下一个v进行比较
- 如果比v[0]小,那么就意味着此时的ans尾部元素已经无法合并下一个元素了,所以将v加入ans,重复4操作
func merge(ins [][]int) [][]int {
ans := make([][]int, 0)
sort.Slice(ins, func(i, j int) bool {
return ins[i][0] < ins[j][0]
})
for _,v := range ins {
ll := len(ans)
if ll == 0 || ans[ll-1][1] < v[0] {
ans = append(ans,v)
}else {
ans[ll-1][1] = max(ans[ll-1][1],v[1])
}
}
return ans
}
func max(x int, y int) int {
if x < y {
return y
}
return x
}