--- link: https://leetcode.com/problems/merge-k-sorted-lists/ tags: linked list, singly, hard, heap --- # 23. Merge k Sorted Lists ## Question Merge *k* sorted linked lists and return it as one sorted list. Analyze and describe its complexity. **Example:** ``` Input: [ 1->4->5, 1->3->4, 2->6 ] Output: 1->1->2->3->4->4->5->6 ``` ## Solution: Python ```python= # Definition for singly-linked list. # class ListNode(object): # def __init__(self, x): # self.val = x # self.next = None class Solution(object): def mergeKLists(self, lists): """ :type lists: List[ListNode] :rtype: ListNode """ from heapq import heappush, heappop heap = [] dummy_node = ListNode() curr = dummy_node for node in lists: if node: heappush(heap, (node.val, node)) while heap: _, node = heappop(heap) curr.next = node curr = curr.next if node.next: heappush(heap, (node.next.val, node.next)) return dummy_node.next ``` ## Solution: Java ```java= ```