题解 | #合并区间#
合并区间
https://www.nowcoder.com/practice/69f4e5b7ad284a478777cb2a17fb5e6a
package main
import (
. "nc_tools"
"sort"
)
/*
* type Interval struct {
* Start int
* End int
* }
*/
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param intervals Interval类一维数组
* @return Interval类一维数组
*/
func merge(intervals []*Interval) []*Interval {
if len(intervals) == 0 {
return []*Interval{}
}
// 根据区间的期间进行排序
sort.Slice(intervals, func(i, j int) bool {
return intervals[i].Start < intervals[j].Start
})
// 合并区间
var merged []*Interval
for i := 0; i < len(intervals); i++ {
if len(merged) == 0 || merged[len(merged)-1].End < intervals[i].Start {
merged = append(merged, intervals[i])
} else {
// 否则,有重叠,合并区间
merged[len(merged)-1].End = max(merged[len(merged)-1].End, intervals[i].End)
}
}
return merged
}
func max(a, b int) int {
if a > b {
return a
}
return b
}

