leetcode56题合并区间
这个题的思路还是很清晰的:先进行切片的排序,之后再进行一个区间和合并
一个区间可以表示为[start end],前文聊的区间调度问题,需要按照end排序,这就方便满足贪心的性质,但是对于区间的合并问题,其实按照end和start排序都可以,不过为了安全起见,我们选择用start进行排序
func merge(intervals [][]int) [][]int {
//说实话,这个玩意感觉还是用go好理解一点,写代码也舒服一点
sort.Slice(intervals,func(i,j int) bool{
return intervals[i][0] < intervals[j][0]
})
res := make([][]int,0)
left := intervals[0][0]
right := intervals[0][1]
for i := 1;i < len(intervals);i++{
value := intervals[i]
if right >= value[0]{
if right < value[1]{
right = value[1]
}
}else {
res = append(res,[]int{left,right})
left = value[0]
right = value[1]
}
}
res = append(res,[]int{left,right})
return res
}