题解 | #合并区间#
合并区间
https://www.nowcoder.com/practice/69f4e5b7ad284a478777cb2a17fb5e6a
package main import "sort" import . "nc_tools" // type Interval struct { // Start int // End int // } type Intervals []*Interval func (i Intervals) Len() int { return len(i) } func (i Intervals) Less(j, k int) bool { return i[j].Start < i[k].Start } func (i Intervals) Swap(j, k int) { i[j], i[k] = i[k], i[j] } /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param intervals Interval类一维数组 * @return Interval类一维数组 */ func merge(intervals []*Interval) []*Interval { if len(intervals) == 0 { return nil } sort.Sort(Intervals(intervals)) merged := []*Interval{{intervals[0].Start, intervals[0].End}} for _, interval := range intervals[1:] { if merged[len(merged)-1].End >= interval.Start { merged[len(merged)-1].End = max(merged[len(merged)-1].End, interval.End) } else { merged = append(merged, interval) } } return merged } func max(a, b int) int { if a > b { return a } return b }