1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
|
var merge = function (intervals) { intervals.sort((a, b) => { if (a[0] !== b[0]) { return a[0] - b[0]; } else { return a[1] - b[1]; } });
const stack = [intervals[0]]; for (let i = 1; i < intervals.length; i++) { const [start, end] = intervals[i]; if (stack[stack.length - 1][1] >= start) { stack[stack.length - 1][0] = Math.min(stack[stack.length - 1][0], start); stack[stack.length - 1][1] = Math.max(stack[stack.length - 1][1], end); } else { stack.push(intervals[i]); } } return stack; };
|