跳转至

LC56 - 合并区间

MergeIntervals.go
package Array

import (
    "cmp"
    "slices"
)

func merge(intervals [][]int) [][]int {
    slices.SortFunc(intervals, func(a, b []int) int {
        return cmp.Compare(a[0], b[0])
    })
    result := make([][]int, 0)
    curStart := intervals[0][0]
    curEnd := intervals[0][1]
    for i := 0; i < len(intervals); i++ {
        if curEnd >= intervals[i][0] {
            curEnd = max(curEnd, intervals[i][1])
        } else {
            result = append(result, []int{curStart, curEnd})
            curStart = intervals[i][0]
            curEnd = intervals[i][1]
        }
    }
    result = append(result, []int{curStart, curEnd})
    return result
}