Merge Intervals

Key Idea

Solution

class Solution:
    def merge(self, intervals: List[List[int]]) -> List[List[int]]:
        # Understanding:
            # Merge overlapping intervals
            # Array of Start,end
        
        # Sorting based on start
        intervals.sort(key=lambda x: x[0])

        merged = []
        for start, end in intervals:
            # If merged is empty OR start is greater than last end
            # You create new entry
            if not merged or start > merged[-1][1]:
                merged.append([start,end])
            else:
                # else it is keep checking
                merged[-1][1] = max(merged[-1][1], end)
        return merged

Complexity