7.25 56. 合并區間
以數組 intervals
表示若干個區間的集合,其中單個區間為 intervals[i] = [starti, endi]
。請你合并所有重疊的區間,并返回 一個不重疊的區間數組,該數組需恰好覆蓋輸入中的所有區間 。
我的思路:
左端點升序排序:
1 右邊的:rightMax = 3
什么時候可以合并?當ansArr有值,而且item[0] < ansArr[len-1][1]
更新ansArr[len-1][1]:選取大的
不能合并->直接push
我的代碼:
var merge = function(intervals) {// 先排序:intervals.sort((a , b) =>a[0] - b[0]);let ansArr = [];// 遍歷intervalsfor(let item of intervals){const len = ansArr.length;if(len && item[0] <= ansArr[len - 1][1]){ansArr[len - 1][1] = Math.max(ansArr[len - 1 ][1] , item[1]);}else {ansArr.push(item);}}return ansArr;};
總結:這段代碼實現了區間合并算法。首先對區間按起始點排序,然后遍歷每個區間,如果當前區間與結果數組中的最后一個區間有重疊,就合并它們;否則,將當前區間加入結果數組。最終返回合并后的區間數組。