Merge K Sorted Lists – Solution & Complexity

Solution Walkthrough

  1. Step 1: Recognize the Pattern

    The key pattern is: A min-heap retains one current value from each list. Identify the state and invariant before coding.

  2. Step 2: Build the Algorithm

    Advance one state transition at a time. Mark or update state before exploring dependent work.

  3. Step 3: Check Edge Cases

    Test empty or minimal input, skewed shapes, duplicates where allowed, and impossible outcomes.

  4. Step 4: Solution and Complexity

    Time: O(n log k). Space: O(k).

    def merge_k_lists(lists: list[list[int]]) -> list[int]:
        import heapq
        heap = [(values[0], i, 0) for i, values in enumerate(lists) if values]
        heapq.heapify(heap)
        answer = []
        while heap:
            value, list_index, index = heapq.heappop(heap)
            answer.append(value)
            if index + 1 < len(lists[list_index]):
                heapq.heappush(heap, (lists[list_index][index + 1], list_index, index + 1))
        return answer

FAQ