CODE-0005 · claude-haiku-4-5 (high)def merge_intervals(intervals):
"""
Takes a list of intervals and returns a merged list of non-overlapping intervals.
Two intervals are considered overlapping or touching if one ends where or after
the other begins. All overlapping/touching intervals are merged into a single
interval covering their union.
Args:
intervals: A list of [start, end] pairs where start <= end
Returns:
A sorted list of non-overlapping [start, end] intervals
"""
if not intervals:
return []
# Sort intervals by start position, then by end position
sorted_intervals = sorted(intervals)
# Initialize result with the first interval
merged = [sorted_intervals[0][:]] # Copy the first interval
for current in sorted_intervals[1:]:
last_merged = merged[-1]
# Check if current interval overlaps or touches the last merged interval
# Intervals touch/overlap if current start <= last end
if current[0] <= last_merged[1]:
# Merge by extending the end of the last merged interval
last_merged[1] = max(last_merged[1], current[1])
else:
# No overlap, add current interval as new entry
merged.append(current[:]) # Copy current interval
return merged