
Merge all overlapping intervals in an array of [start, end] pairs and return the minimal set of non-overlapping intervals covering the same ranges. Intervals that share an endpoint should also be merged.
intervals = [[1,3],[2,6],[8,10],[15,18]]Output[[1,6],[8,10],[15,18]]Why[1,3] overlaps with [2,6], so they merge.intervals = [[1,4],[4,5]]Output[[1,5]]WhyTouching endpoints count as overlap.`1 <= len(intervals) <= 10^4``intervals[i].length == 2``0 <= start <= end <= 10^4`