> 技术文档 > 力扣面试150(41/150)

力扣面试150(41/150)


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 = []; // 遍历intervals for(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; };

总结:这段代码实现了区间合并算法。首先对区间按起始点排序,然后遍历每个区间,如果当前区间与结果数组中的最后一个区间有重叠,就合并它们;否则,将当前区间加入结果数组。最终返回合并后的区间数组。