JS实现LeetCode56题:合并区间

方法:第二个区间的左区间小于等于第一个区间里的数(第二个区间的左区间小于等于第一个区间的右区间即可),则这两个区间就可以合并,左区间就是第一个区间的左区间,右区间是第一个区间和第二个区间的右区间中较大的值

    注意:在直接开始比较之前,应先对区间数组进行排序,这里比较左区间的值即可,从小到大

直接上代码

    var merge = function(intervals) {
        //先判断传入的数组是否为空
        if(intervals.length<2){
            return intervals;
        }
        //为数组进行排序,只排左区间就好了,这里是为了确定左区间的值是最小的
        intervals.sort((a,b)=>{return a[0]-b[0]})
        //定义一个临时数组curr来存储这个合并后的区间,刚开始的合并区间就是第一个区间
        let curr=intervals[0];
        let result=[]
        //比较第二个区间的左区间是否小于等于第一个区间的右区间
        for(let interval of intervals){
            if(interval[0]<=curr[1]){
                curr[1]=Math.max(curr[1],interval[1])
            }else{
                //不符合合并条件的,就将这个curr压入result,然后重新创建curr
                result.push(curr);
                curr=interval
            }
            
        }
        //为了防止一直都符合条件,到intervals的最后一个元素都符合条件后这个curr是没有push操作的,所以要把它也push进result
        //看看curr里还有没有东西即可
        if(curr.length!==0){
            result.push(curr)
        }
        return result
};

猜你喜欢

转载自blog.csdn.net/weixin_42309926/article/details/108138063