Sponsored
Sponsored
The key to solving this problem is to first sort the intervals based on the starting time. Once sorted, we can iterate over the intervals and merge them if they overlap. Two intervals overlap if the start of the current interval is less than or equal to the end of the previous interval.
Time Complexity: O(n log n), due to sorting.
Space Complexity: O(n), required for the output array.
1var merge = function(intervals) {
2 intervals.sort((a, b) => a[0] - b[0]);
3 let merged = [];
4 for (let interval of intervals) {
5 if (!merged.length || merged[merged.length - 1][1] < interval[0]) {
6 merged.push(interval);
7 } else {
8 merged[merged.length - 1][1] = Math.max(merged[merged.length - 1][1], interval[1]);
9 }
10 }
11 return merged;
12};In JavaScript, intervals are sorted using the sort function with a custom comparator. By iterating through, intervals are merged if they overlap based on their criteria.
This method involves sorting first and directly inserting into the result list, verifying overlap in consecutive intervals.