题解 | #合并区间#
合并区间
https://www.nowcoder.com/practice/69f4e5b7ad284a478777cb2a17fb5e6a
/*
* function Interval(a, b){
* this.start = a || 0;
* this.end = b || 0;
* }
* [a,b][c,d]
* b<c [a,b][c,d]
* d<b [a,b]
* b<d [a,d]
*
*/
/**
*
* @param intervals Interval类一维数组
* @return Interval类一维数组
*/
function merge( intervals ) {
// write code here
intervals.sort((a,b) => a.start - b.start)
let pointer = []
if (intervals[0]) pointer.push(intervals[0])
for (let i=1; i<intervals.length; i++) {
let len = pointer.length
let pointerS = pointer[len-1].start
let pointerE = pointer[len-1].end
let curS = intervals[i].start
let curE = intervals[i].end
if (pointerE < curS) {
pointer.push(new Interval(curS, curE))
} else if (pointerE < curE) {
pointer[len-1] = new Interval(pointerS, curE)
}
}
return pointer
}
module.exports = {
merge : merge
};
重点在于先排序,然后就只有两种选择如下:
[a,b][c,d]
* b<c [a,b][c,d]
* b<d [a,d]
查看19道真题和解析
