您的位置 首页 java

2021-09-28:合并区间。以数组 intervals 表示若干个区间的集合,

2021-09-28:合并区间。以数组 intervals 表示若干个区间的集合,其中单个区间为 intervals[i] = [starti, endi] 。请你合并所有重叠的区间,并返回一个不重叠的区间数组,该数组需恰好覆盖输入中的所有区间。力扣56。

福大大 答案2021-09-28:

按开始位置排序。i的开始位置比之前的结束位置,需要计数。

时间复杂度:排序的。

额外空间复杂度:O(1)。原数组复用。

代码用golang编写。代码如下:

 package main

import (
    "fmt"
    " sort "
)

func main() {
    intervals := [][]int{{1, 3}, {2, 6}, {8, 10}, {15, 18}}
    ret := merge(intervals)
    fmt.Println(ret)
}

func merge(intervals [][]int) [][]int {
    if len(intervals) == 0 {
        return [][]int{}
    }
    sort.Slice(intervals, func(i, j int) bool {
        return intervals[i][0] < intervals[j][0]
    })
    s := intervals[0][0]
    e := intervals[0][1]
    size := 0
    for i := 1; i < len(intervals); i++ {
        if intervals[i][0] > e {
            intervals[size][0] = s
            intervals[size][1] = e
            size++
            s = intervals[i][0]
            e = intervals[i][1]
        } else {
            e = getMax(e, intervals[i][1])
        }
    }
    intervals[size][0] = s
    intervals[size][1] = e
    size++
    return intervals[0:size]
}

func getMax(a int, b int) int {
    if a > b {
        return a
    } else {
        return b
    }
}  

执行结果如下:

2021-09-28:合并区间。以数组 intervals 表示若干个区间的集合,

***

[左神java代码](

文章来源:智云一二三科技

文章标题:2021-09-28:合并区间。以数组 intervals 表示若干个区间的集合,

文章地址:https://www.zhihuclub.com/197113.shtml

关于作者: 智云科技

热门文章

网站地图