给出一个区间的集合,请合并所有重叠的区间。
示例 1:
输入: [[1,3],[2,6],[8,10],[15,18]]
输出: [[1,6],[8,10],[15,18]]
解释: 区间 [1,3] 和 [2,6] 重叠, 将它们合并为 [1,6].
示例 2:
输入: [[1,4],[4,5]]
输出: [[1,5]]
解释: 区间 [1,4] 和 [4,5] 可被视为重叠区间。
/** * @param {number[][]} intervals * @return {number[][]} */ //将重复区间进行合并 function mergeRepeat(left,right){ let left_max = left[1]; let left_min = left[0]; let right_max = right[1]; let right_min = right[0]; let min = left_min<right_min?left_min:right_min; let max = left_max>right_max?left_max:right_max; return [min,max]; } //检查是否有重复区间 function IsRepeat(left,right){ let left_max = left[1]; let left_min = left[0]; let right_max = right[1]; let right_min = right[0]; if(left_min>right_max|| left_max<right_min){ return 0;//没有重复区间 } return 1;//有重复区间 } function sortByindexZero(num){ return function(a,b){ var value1 = a[num]; var value2 = b[num]; return value1-value2; } } var merge = function(intervals) { let i =0; //排序数组内数组的第一个元素 intervals.sort(sortByindexZero(0)); while(i<intervals.length-1){ if(IsRepeat(intervals[i],intervals[i+1])==1){//如果重复 intervals[i+1] = mergeRepeat(intervals[i],intervals[i+1]); intervals[i] = ""; } i++; } return intervals.filter(item=>item!=""); };
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/merge-intervals
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。