js算法题---合并区间

Posted 苏小米

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了js算法题---合并区间相关的知识,希望对你有一定的参考价值。

将一组区间中所有重叠的区间进行合并,例如 [起点,终点] 这种方式

输入:[[1,3],[2,6],[15,18],[8,10],[10,11],[7,8]]
输出:[[1,6],[15,18],[7,11]]

分析:

首先需要排序,排序之后,就可以看看有没有重叠的,如果重叠就合并。

var arr = [[1,3], [2,6],[15,18],[8,10],[10,11],[7,8]]
function merge(arr){
    //排序
    arr.sort(function(a,b){
        if(a[0] != b[0]){
            return a[0]-b[0]
        }
        return a[1] - b[1]
    })
    let ans = [], start, end;
    //排序之后,看看有没有重叠的,如果有,合并
    for(let i=0;i<arr.length;i++){
            let s = arr[i][0], e = arr[i][1];
            if(start === undefined){
                start = s, end = e;
            }else if(s <= end){
                end = Math.max(e, end)
            }else{
                let part = [start, end];
                ans.push(part)
                start = s;
                end = e
            }
    }
    if(start !== undefined){
        let part = [start, end]
        ans.push(part)
    }
    
    return ans
}

console.log( merge(arr))

 

以上是关于js算法题---合并区间的主要内容,如果未能解决你的问题,请参考以下文章

力扣算法JS LC [56. 合并区间] LC [738. 单调递增的数字]

力扣算法题—056合并区间

微信小程序java数组合并区间

算法刷题打卡

贪心算法_区间选点_区间分组_区间覆盖_huffman树

Java书签 #区间合并算法与实际业务应用