zoukankan      html  css  js  c++  java
  • 合并区间

    给出一个区间的集合,请合并所有重叠的区间。

    示例 1:

    输入: [[1,3],[2,6],[8,10],[15,18]]
    输出: [[1,6],[8,10],[15,18]]
    解释: 区间 [1,3] 和 [2,6] 重叠, 将它们合并为 [1,6].
    示例 2:

    输入: [[1,4],[4,5]]
    输出: [[1,5]]
    解释: 区间 [1,4] 和 [4,5] 可被视为重叠区间。

    /**
     * @param {number[][]} intervals
     * @return {number[][]}
     */
    //将重复区间进行合并
    function mergeRepeat(left,right){
        let left_max = left[1];
        let left_min = left[0];
    
        let right_max = right[1];
        let right_min = right[0];
    
        let min = left_min<right_min?left_min:right_min;
        let max = left_max>right_max?left_max:right_max;
        return [min,max];
    }
    
    //检查是否有重复区间
    function IsRepeat(left,right){
        let left_max = left[1];
        let left_min = left[0];
    
        let right_max = right[1];
        let right_min = right[0];
    
        if(left_min>right_max|| left_max<right_min){
            return 0;//没有重复区间
        }
        return 1;//有重复区间
    }
    function sortByindexZero(num){
        return function(a,b){
            var value1 = a[num];
            var value2 = b[num];
            return value1-value2;
        }
    }
    var merge = function(intervals) {
        let i =0;
        //排序数组内数组的第一个元素
        intervals.sort(sortByindexZero(0));
        while(i<intervals.length-1){
            if(IsRepeat(intervals[i],intervals[i+1])==1){//如果重复
                intervals[i+1] = mergeRepeat(intervals[i],intervals[i+1]);
                intervals[i] = "";
            }
            i++;
        }
        return intervals.filter(item=>item!="");
    };

    来源:力扣(LeetCode)
    链接:https://leetcode-cn.com/problems/merge-intervals
    著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

  • 相关阅读:
    一手遮天 Android
    一手遮天 Android
    一手遮天 Android
    一手遮天 Android
    一手遮天 Android
    一手遮天 Android
    一手遮天 Android
    一手遮天 Android
    一手遮天 Android
    一手遮天 Android
  • 原文地址:https://www.cnblogs.com/panjingshuang/p/11754523.html
Copyright © 2011-2022 走看看