CODE-0005 · claude-haiku-4-5 (default)def merge_intervals(intervals):
"""
Merge overlapping intervals into a minimal list of non-overlapping intervals.
Args:
intervals: A list of intervals, each given as [start, end] with start <= end
Returns:
A sorted list of non-overlapping intervals that cover the same points
"""
if not intervals:
return []
# Sort intervals by start time, then by end time
sorted_intervals = sorted(intervals, key=lambda x: (x[0], x[1]))
# Initialize result with the first interval
merged = [sorted_intervals[0][:]] # Create a copy of the first interval
for current in sorted_intervals[1:]:
last_merged = merged[-1]
# Check if current interval overlaps or touches the last merged interval
# They overlap/touch if current's start <= last_merged's 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 a new merged interval
merged.append(current[:]) # Create a copy
return merged