随笔记录,合并区间并不难,如果是初次接触golang,切片的排序可能是比较棘手的问题,可以使用golang自带的sort.Slice排序具体的实现可以看代码。
合并的思想:
1、首先对全部的区间数据进行排序,排序过后的区间进行下算法比较;
2、区间1的结束位置也就是代码中的tmp, 大于等于 区间2二的起始位置,区间2就是代码中的 j = i+1,满足以上条件可以合并,从区间1和区间2的结束中找最大的并修改,继续查找。
2、j 开启新一轮区间的合并。

func TestMege(t *testing.T) {
data := [][]int{
{1, 3},
{4, 5},
{8, 10},
{2, 6},
{9, 12},
{15, 18},
}
merged := [][]int{}
sort.Slice(data, func(i, j int) bool {
return data[i][0] < data[j][0]
})
for i := 0; i < len(data); {
tmp := []int{data[i][0], data[i][1]}
j := i + 1
for j < len(data) && data[j][0] <= tmp[1] {
tmp[1] = QMax(tmp[1], data[j][1])
j++
}
merged = append(merged, tmp)
i = j
}
fmt.Println(merged)
}
func QMax(a int, b int) int {
if a > b {
return a
}
return b
}