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