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