题解 | #合并区间#
合并区间
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 }