Categories

# 56. Merge Intervals Leetcode Javascript Solution

The Problem:

Given an array of `intervals` where `intervals[i] = [starti, endi]`, merge all overlapping intervals, and return an array of the non-overlapping intervals that cover all the intervals in the input.

Example 1:

```Input: intervals = [[1,3],[2,6],[8,10],[15,18]]
Output: [[1,6],[8,10],[15,18]]
Explanation: Since intervals [1,3] and [2,6] overlaps, merge them into [1,6].
```

Example 2:

```Input: intervals = [[1,4],[4,5]]
Output: [[1,5]]
Explanation: Intervals [1,4] and [4,5] are considered overlapping.
```

Constraints:

• `1 <= intervals.length <= 104`
• `intervals[i].length == 2`
• `0 <= starti <= endi <= 104`

The Problem:

```var merge = function(intervals) {
if(intervals.length == 1 || intervals.length == 0){ return intervals}
intervals.sort((a,b) => a[0] !== b[0] ? a[0]-b[0] : a[1]-b[1])
// console.log(intervals)
let ans = [], prev = intervals[0]
ans.push(prev)
for(let interval of intervals){
// console.log(prev)
if(interval[0] <= prev[1]){
prev[1] = Math.max(interval[1], prev[1])
//prev = interval (remember not to update prev in this if
} else {
ans.push(interval)
prev = interval
}
// console.log(ans)
}
return ans
};```