leetcode-day18-插入区间[57]

2020-11-04  本文已影响0人  孙静静
image.png

思路:将新的数组和旧的数据取交集,分为三种情况,一是旧数组的数在新数组之前,二是在之后,三是有交集,有交集的话就取并集,这里很重要的一步是,最后要判断是否有交集,如果没有交集,还需要把新数据添加到旧数组中。最后将组合的新数组排序。

/**
 * @param {number[][]} intervals
 * @param {number[]} newInterval
 * @return {number[][]}
 */
var insert = function(intervals, newInterval) {
    if(intervals.length === 0) return [newInterval];
    let left = newInterval[0], right = newInterval[1];
    let arr = [], arr2 = [], arr3 = [], arr4 = [];
    intervals.map(item =>{
        if(item[0] > right || item[1] < left){  // 没交集
            arr.push(item);
            console.log(1);
        } else {
            arr2.push(Math.min(item[0], left));
            arr2.push(Math.max(item[1], right));
        }
    })
    if(arr2.length === 0){
        arr.push([left, right]);
    } else {
        arr.push([arr2[0], arr2[arr2.length - 1]]);
    }
  // 排序
    arr3 = arr.flat();
    arr3.sort((a, b) =>
        return a - b;
    })
    for(let i=0;i<arr3.length;i++){
        if(i % 2 === 0){
            arr4.push([arr3[i], arr3[i+1]]);
        }
    }
    return arr4;
};
上一篇 下一篇

猜你喜欢

热点阅读