```
class Solution(object):
def merge(self, intervals):
def add_and_merge(interval, merged_intervals):
if not merged_intervals:
merged_intervals.append(interval)
else:
last_interval = merged_intervals[-1]
if last_interval.end < interval.start:
merged_intervals.append(interval)
else:
last_interval.end = max(last_interval.end,
interval.end)
intervals.sort(key=lambda i: i.start)
merged_intervals = []
for interval in intervals:
add_and_merge(interval, merged_intervals)
return merged_intervals
```