package main import ( "sort" ) func main() { intervals := [][]int{ {5, 5}, {1, 3}, {3, 5}, {4, 6}, {1, 1}, {3, 3}, {5, 6}, {3, 3}, {2, 4}, {0, 0}, } merge(intervals) } func merge(intervals [][]int) [][]int { sort.Slice(intervals, func(i, j int) bool { return intervals[i][0] < intervals[j][0] }) //fmt.Println(intervals) tp2 := -1 result := [][]int{} for i := 0; i < len(intervals); i++ { if intervals[i][0] < tp2 { continue } temp := make([]int, 0) temp = append(temp, intervals[i]...) tp := intervals[i][1] //fmt.Println("当前tp1", tp) for j := i + 1; j < len(intervals); j++ { if intervals[j][0] <= tp { temp = append(temp, intervals[j]...) tp = max(intervals[j][1], tp) //fmt.Println("--", intervals[j][1], intervals[i][1]) //fmt.Println("当前tp", tp) } } //fmt.Println("temp", temp) //fmt.Println("当前tp", tp) tp2 = tp + 1 sort.Ints(temp) result = append(result, []int{temp[0], temp[len(temp)-1]}) } //fmt.Println(result) return result }