025_合并区间

知识点:区间、排序

LeetCode第五十六题:https://leetcode-cn.com/problems/merge-intervals/submissions/

区间问题,先排序(以start或者end为索引均可),然后观察规律。情况明了之后在着手写代码。

语言:GoLang

func merge(intervals [][]int) [][]int {
    length := len(intervals)

    if length < 2 {
        return intervals
    }

    sort.Slice(intervals, func (i int, j int) bool {
        return intervals[i][0] < intervals[j][0]
    })

    result := [][]int{intervals[0]}
    for i := 1; i < length; i++ {
        last := len(result) - 1
        if result[last][1] >= intervals[i][0] {
            result[last][1] = max(result[last][1], intervals[i][1])
        } else {
            result = append(result, intervals[i])
        }
    }

    return result
}

func max(a int, b int) int {
    if a > b {
        return a
    }
    return b
}
posted @ 2020-03-21 10:09  Cenyol  阅读(79)  评论(0)    收藏  举报