def merge_intervals(intervals):
if not intervals:
return []
sorted_intervals = sorted(intervals, key=lambda x: x[0])
merged = []
current = sorted_intervals[0][:]
for i in range(1, len(sorted_intervals)):
next_int = sorted_intervals[i]
if current[1] >= next_int[0]:
current[1] = max(current[1], next_int[1])
else:
merged.append(current)
current = next_int[:]
merged.append(current)
return merged