# Definition for singly-linked list. # class ListNode: # def __init__(self, val=0, next=None): # self.val = val # self.next = next class Solution: def mergeKLists(self, lists: List[Optional[ListNode]]) -> Optional[ListNode]: if not lists: return None s = len(lists) if s == 1: return lists[0] mid = s // 2 l = self.mergeKLists(lists[:mid]) r = self.mergeKLists(lists[mid:]) return self.merge(l, r) def merge(self, l: Optional[ListNode], r: Optional[ListNode]) -> Optional[ListNode]: head = tail = ListNode(0) while l and r: if l.val <= r.val: tail.next = l l = l.next else: tail.next = r r = r.next tail = tail.next tail.next = l or r return head.next