function merge(intervals)
if length of intervals = 0 then
return []
sort intervals by start ascending
result := [intervals[0]]
for i from 1 to length of intervals - 1
last := result[length of result - 1]
if intervals[i].start <= last.end then
last.end := max(last.end, intervals[i].end)
else
result.append(intervals[i])
return result
Time: . Space: for result.