data_structures.arrays.merge_intervals ====================================== .. py:module:: data_structures.arrays.merge_intervals Functions --------- .. autoapisummary:: data_structures.arrays.merge_intervals.merge_intervals Module Contents --------------- .. py:function:: merge_intervals(intervals: list[list[int]]) -> list[list[int]] Merge all overlapping intervals. Each interval is represented as a list of two integers [start, end]. The function merges overlapping intervals and returns a list of non-overlapping intervals sorted by start time. Parameters: intervals (list[list[int]]): A list of intervals. Returns: list[list[int]]: A list of merged non-overlapping intervals. Edge Cases Handled: - Empty list: returns [] - Single interval: returns the interval itself - Intervals already sorted or unsorted - Fully overlapping intervals - Invalid intervals (e.g., [[]] or intervals not having exactly 2 integers) raise ValueError Examples: >>> merge_intervals([[1, 3], [2, 6], [8, 10], [15, 18]]) [[1, 6], [8, 10], [15, 18]] >>> merge_intervals([[1, 4], [4, 5]]) [[1, 5]] >>> merge_intervals([[6, 8], [1, 3], [2, 4]]) [[1, 4], [6, 8]] >>> merge_intervals([]) [] >>> merge_intervals([[1, 4]]) [[1, 4]] Time Complexity: O(n log n) - sorting the intervals, where n is the number of intervals. Space Complexity: O(n) - storing the merged intervals.