区间合并

 

 https://leetcode.cn/problems/merge-intervals/

 

func merge(intervals [][]int) [][]int {
    sort.Slice(intervals, func(i, j int) bool {
        return intervals[i][0]<intervals[j][0] //自定义排序,<表示从小到大排序,>表示从大到小排序
    })

    ans:=make([][]int,0)
    le:=intervals[0][0] //初始化左右指针
    ri:=intervals[0][1]
    for i:=range intervals{
        now:=intervals[i]
        if now[0]<=ri&& now[1]>ri{ //当前区间的左指针大于维护区间的右指针,并且当前区间的右指针大于维护区间的右指针
            ri=now[1]
        }else if now[0]>ri{ //区间不连续的情况
            ans=append(ans,[]int{le,ri})
            le=now[0]
            ri=now[1]
        }
    }
    ans=append(ans,[]int{le,ri})
    return ans
}

 

posted @ 2022-06-25 16:11  知道了呀~  阅读(51)  评论(0编辑  收藏  举报