以數組 intervals 表示若干個區間的集合,其中單個區間為 intervals[i] = [starti, endi] 。請你合并所有重疊的區間,并返回 一個不重疊的區間數組,該數組需恰好覆蓋輸入中的所有區間 。
示例 1:
輸入:intervals = [[1,3],[2,6],[8,10],[15,18]]
輸出:[[1,6],[8,10],[15,18]]
解釋:區間 [1,3] 和 [2,6] 重疊, 將它們合并為 [1,6].
示例 2:
輸入:intervals = [[1,4],[4,5]]
輸出:[[1,5]]
解釋:區間 [1,4] 和 [4,5] 可被視為重疊區間。
解法:
/*** @param {number[][]} intervals* @return {number[][]}* 思路:* prev 初始為第一個區間,curList 表示當前的區間,result 表示結果數組* 1、遍歷,符合條件更新pre;* 2、不能合并,將pre推入結果數組,之后更新pre* 3、最后要補上pre*/
var merge = function (intervals) {intervals = intervals.sort((a,b)=>a[0]-b[0])let pre = intervals[0],result = []for(let i=1;i<intervals.length;i++){let curList = intervals[i],preStart=pre[0],preEnd=pre[1],curListStart=curList[0],curListEnd=curList[1]if(preEnd>=curListStart){pre=[Math.min(preStart,curListStart),Math.max(preEnd,curListEnd)]} else{result.push(pre)pre = curList}}result.push(pre)return result
};