代码思路:分治思想,K个链表两两配对,合并排序,重复此过程直到合并所有链表
class Solution:
def mergeTwoLists(self, l1: ListNode, l2: ListNode) -> ListNode:
res=ListNode(None)
node=res
while l1 and l2:
if l1.val<l2.val:
node.next,l1 = l1,l1.next
else:
node.next,l2 = l2,l2.next
node=node.next
if l1 is not None:
node.next=l1
else:
node.next=l2
return res.next
def mergeKLists(self, lists: List[ListNode]) -> ListNode:
k=len(lists)
step=1
while step < k:
for i in range(0, k - step, step * 2):
lists[i] = self.mergeTwoLists(lists[i], lists[i + step])
step *= 2
return lists[0] if k > 0 else lists