leetcode

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
}
上一篇 下一篇

猜你喜欢

热点阅读