leetcode-study

57. Insert Interval

class Solution:
    def insert(self, intervals: List[List[int]], newInterval: List[int]) -> List[List[int]]:
        """
        Inserts a new interval into a list of non-overlapping sorted intervals, merging if necessary.
        
        Parameters:
            intervals (List[List[int]]): A list of sorted, non-overlapping intervals [start, end].
            newInterval (List[int]): The new interval to add.
            
        Returns:
            List[List[int]]: The resulting list of merged intervals after inserting newInterval.
        """
        merged = []  # This list will store the resulting intervals.
        i, n = 0, len(intervals)

        # Add all intervals ending before the new interval starts.
        while i < n and intervals[i][1] < newInterval[0]:
            merged.append(intervals[i])
            i += 1

        # Merge overlapping intervals with newInterval.
        while i < n and intervals[i][0] <= newInterval[1]:
            # Update the newInterval's start to the minimum, and end to the maximum.
            newInterval[0] = min(newInterval[0], intervals[i][0])
            newInterval[1] = max(newInterval[1], intervals[i][1])
            i += 1
        # Append the merged newInterval.
        merged.append(newInterval)

        # Add the remaining intervals (those starting after the newInterval ends).
        while i < n:
            merged.append(intervals[i])
            i += 1

        return merged

Summary of Techniques and Approaches: