
package mainimport ( "fmt" "sort")func merge(intervals [][]int) [][]int { if len(intervals)==0 { return nil } sort.Slice(intervals, func(i, j int) bool { return intervals[i][0]<intervals[j][0] }) queue :=[][]int{intervals[0]} for i:=1;i<len(intervals);i++{ top :=queue[len(queue)-1] curr :=intervals[i] if curr[0]>top[1] {//当前值首地址大于栈顶的尾部元素 queue = append(queue,curr) continue } //{a,b}{c,d} b>c if curr[1]>top[1] { top[1]=curr[1]// 合并区间 } } return queue}func main() { fmt.Println(merge([][]int{{1,3},{2,4},{8,10},{15,18}})) fmt.Println(merge([][]int{{1,4},{4,5}}))}
