Merge Intervals
Hard · 80 XPMerge overlapping intervals and print each surviving interval as start-end, one per line.
Target output
1-6 8-12 15-18
Blank · autosaved
PYmerge-intervals.py
Sort by start. If the next interval starts at or before the current end, extend the end to the max of the two.
intervals = [(1, 3), (8, 10), (2, 6), (15, 18), (9, 12)]
merged = []
for start, end in sorted(intervals):
if merged and start <= merged[-1][1]:
merged[-1][1] = max(merged[-1][1], end)
else:
merged.append([start, end])
for start, end in merged:
print(f"{start}-{end}")
Run your code to check it…