/** * @param {number[][]} intervals * @return {number[][]} */ const merge = (intervals) => { if (1 === intervals.length) return intervals; let result = []; intervals.sort((a, b) => a[0] - b[0]) while (0 < intervals.length) { let curr = intervals.shift(); if (0 === result.length) { result.push(curr); continue; } let prev = result[result.length - 1]; if (prev[1] >= curr[0]) { result.pop(); result.push([Math.min(prev[0], curr[0]), Math.max(prev[1], curr[1])]); } else { result.push(curr); } } return result; };