Skip to content

Latest commit

 

History

History
24 lines (24 loc) · 649 Bytes

56合并区间.md

File metadata and controls

24 lines (24 loc) · 649 Bytes
func merge(intervals [][]int) [][]int {
    var res [][]int
    // 按左区间从小到大排序
    sort.Slice(intervals, func(i, j int) bool {
        return intervals[i][0] < intervals[j][0]
    })
    res = append(res, intervals[0])
    for i := 1; i < len(intervals); i++ {
        start := intervals[i][0]
        end := intervals[i][1]
        // 重叠-合并
        if start <= res[len(res)-1][1] {
            if end > res[len(res)-1][1] {
                res[len(res)-1][1] = end
            }
        } else {
            // 不重叠,记录
            res = append(res, []int{start, end})
        }
    }
    return res
}