Skip to content

Code:

js
/**
 * @param {number[][]} intervals
 * @param {number[]} newInterval
 * @return {number[][]}
 */
var insert = function(intervals, newInterval) {
    if (!intervals.length) {
        return [newInterval]
    }
    
    for (let i = 0; i < intervals.length + 1; i++) {
        if (!intervals[i] || newInterval[0] < intervals[i][0]) {
            intervals.splice(i, 0 , newInterval)
            break;
        }
        
    }

    const arr = []
    let i = -1

    while(++i < intervals.length) {
        let start = intervals[i][0]
        let end = intervals[i][1]

        while(intervals[i + 1] && end >= intervals[i + 1][0]) {
            end = Math.max(end, intervals[i + 1][1])
            i++
        }

        arr.push([start, end])
    }


    return arr
};


// 分段循环
// 时间复杂度:O(n)
// 空间复杂度:O(1)

console.log(insert([[1,3],[6,9]], [2, 5]))

❤ With Algorithm