leetcode-day18-插入区间[57]

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

你可能感兴趣的:(leetcode-day18-插入区间[57])