根据题目要求使用分治算法进行融合:
# Definition for singly-linked list.
# class ListNode:
# def __init__(self, x):
# self.val = x
# self.next = None
class Solution:
#same as #148 Sort List
def mergeTwoList(self,l1,l2):
if(l1==None):
return l2
if(l2==None):
return l1
lead = ListNode(0)
p = lead
while(l1!=None and l2!=None):
if(l1.val<l2.val):
p.next=l1
l1=l1.next
p=p.next
else:
p.next=l2
l2=l2.next
p=p.next
if(l1!=None):
p.next=l1
if(l2!=None):
p.next=l2
return lead.next
"""
:type lists: List[ListNode]
:rtype: ListNode
"""
def mergeKLists(self, lists):
if(lists == []):
return []
s=len(lists)
while(s>1):
half = (s+1)//2
for i in range(0,s//2):
lists[i]=Solution.mergeTwoList(self,lists[i],lists[i+half])
s=half
return lists[0]