56. Merge Intervals.go
2019-03-23 本文已影响86人
AnakinSun
注意处理中间不连续的情况
func merge(intervals []Interval) []Interval {
l := len(intervals)
var (
starts []int
ends []int
res []Interval
)
for _, v := range intervals {
starts = append(starts, v.Start)
ends = append(ends, v.End)
}
sort.Ints(starts)
sort.Ints(ends)
for i, j := 0, 0; i < l; i++ {
if i == l-1 || starts[i+1] > ends[i] { //中间出现了不连续,记录前一个连续值
res = append(res, Interval{Start: starts[j], End: ends[i]})
j = i + 1
}
}
return res
}