58 lines
1.0 KiB
Go
58 lines
1.0 KiB
Go
|
|
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
|
||
|
|
}
|