1. # Definition for singly-linked list.
    2. # class ListNode:
    3. # def __init__(self, val=0, next=None):
    4. # self.val = val
    5. # self.next = next
    6. class Solution:
    7. def mergeKLists(self, lists: List[ListNode]) -> ListNode:
    8. if len(lists) == 0:
    9. return None
    10. n = len(lists)
    11. interval = 1
    12. while interval < n:
    13. for i in range(0, n - interval, interval * 2):
    14. lists[i] = self.mergeTwoLists(lists[i], lists[i + interval])
    15. interval *= 2
    16. return lists[0]
    17. def mergeTwoLists(self, l1, l2):
    18. k = headNode = ListNode()
    19. while l1 and l2:
    20. if l1.val < l2.val:
    21. k.next = l1
    22. l1 = l1.next
    23. else:
    24. k.next = l2
    25. l2 = l2.next
    26. k = k.next
    27. k.next = l1 or l2
    28. return headNode.next