Skip to content

Commit badcbbf

Browse files
authored
Enhance merge_intervals function documentation
Added edge cases handling and updated complexity notes.
1 parent 3e0cb06 commit badcbbf

File tree

1 file changed

+15
-5
lines changed

1 file changed

+15
-5
lines changed

data_structures/arrays/merge_intervals.py

Lines changed: 15 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,15 @@ def merge_intervals(intervals: list[list[int]]) -> list[list[int]]:
1111
1212
Returns:
1313
List[List[int]]: A list of merged non-overlapping intervals.
14-
14+
15+
Edge Cases Handled:
16+
- Empty list: returns []
17+
- Single interval: returns the interval itself
18+
- Intervals already sorted or unsorted
19+
- Fully overlapping intervals
20+
- Invalid intervals (e.g., [[]] or intervals not having exactly 2 integers) raise ValueError
21+
22+
1523
Examples:
1624
>>> merge_intervals([[1, 3], [2, 6], [8, 10], [15, 18]])
1725
[[1, 6], [8, 10], [15, 18]]
@@ -25,15 +33,17 @@ def merge_intervals(intervals: list[list[int]]) -> list[list[int]]:
2533
[[1, 4]]
2634
2735
Time Complexity:
28-
O(n log n), where n is the number of intervals (sorting step).
29-
36+
O(n log n) – sorting the intervals, where n is the number of intervals.
37+
3038
Space Complexity:
31-
O(n), for storing the merged intervals.
39+
O(n) storing the merged intervals.
3240
"""
3341

3442
if not intervals:
3543
return []
36-
44+
for interval in intervals:
45+
if len(interval) != 2:
46+
raise ValueError(f"Each interval must have exactly 2 integers, got {interval}")
3747
# Sort intervals based on the start time
3848
intervals.sort(key=lambda interval: interval[0])
3949

0 commit comments

Comments
 (0)