题解 | #合并区间#
合并区间
https://www.nowcoder.com/practice/69f4e5b7ad284a478777cb2a17fb5e6a
package main
import . "nc_tools"
/*
* type Interval struct {
* Start int
* End int
* }
*/
/**
*
* @param intervals Interval类一维数组
* @return Interval类一维数组
*/
/*
*
给出一组区间,请合并所有重叠的区间。
请保证合并后的区间按区间起点升序排列。
*/
func merge(intervals []*Interval) []*Interval {
dp := make([]int, 400010)
for _, interval := range intervals {
dp[interval.Start*2]++
dp[interval.End*2+1]--
}
res := make([]*Interval, 0)
st := -1
for i := 0; i < len(dp); i++ {
if i > 0 {
dp[i] += dp[i-1]
}
if dp[i] > 0 {
if st < 0 {
st = i
}
} else {
if st >= 0 {
interval := &Interval{Start: st / 2, End: (i - 1) / 2}
res = append(res, interval)
st = -1
}
}
}
return res
// write code here
}



