Skip to main content

Merge Intervals

Problem Statement​

Given a collection of intervals, merge all overlapping intervals.

Approach​

To merge the intervals, we can first sort them based on the start time. Then, we can iterate through the sorted intervals and merge them as needed.

Steps:​

  1. Initialize : Sort:

    • Sort the intervals by their start times.
    • Initialize a list to hold the merged intervals.
  2. Iterate:

    • For each interval, check if it overlaps with the last merged interval.
    • If it does, merge them. If not, add the interval to the list.
  3. Return:

    • Return the merged intervals.

Python Implementation​

class Solution:
def merge(self, intervals: List[List[int]]) -> List[List[int]]:
if not intervals:
return []

intervals.sort(key=lambda x: x[0])
merged = [intervals[0]]

for i in range(1, len(intervals)):
current = intervals[i]
last_merged = merged[-1]

if current[0] <= last_merged[1]:
last_merged[1] = max(last_merged[1], current[1])
else:
merged.append(current)

return merged

Time Complexity: O(n log n)
Space Complexity: O(n)