Given an array of intervals intervals, where each interval is a two-element array [start, end] and start <= end, merge all overlapping intervals and return a new array of non-overlapping intervals covering the same ranges. The output may be returned in sorted order by start time.
def merge_intervals(intervals):