描述:
[[10,60],[80,100],[150,180]]
算法代码:
/* * function Interval(a, b){ * this.start = a || 0; * this.end = b || 0; * } */ /** * * @param intervals Interval类一维数组 * @return Interval类一维数组 */ function merge( intervals ) { // write code here var ans = [] //存储结果数组 //排序 var intervals = intervals.sort((a,b)=>a.start-b.start); if(intervals.length === 0){ return intervals; } if(intervals.length ===1){ return intervals; } ans.push(intervals.shift()); while(intervals.length){ //右端点 大于下一个左端点 if(ans[ans.length-1].end >= intervals[0].start){ //右端点小于下一个右端点 if(ans[ans.length-1].end <= intervals[0].end){ ans[ans.length-1].end = intervals[0].end; } // 否则处于包含状态 直接丢弃 intervals.shift(); }else{ // 不相交 push到结果数组 ans.push(intervals.shift()); } } return ans; }
原文:https://www.cnblogs.com/taue997/p/14762512.html