题解 | #合并k个已排序的链表#
合并k个已排序的链表
http://www.nowcoder.com/practice/65cfde9e5b9b4cf2b6bafa5f3ef33fa6
这、、、这不对吧,这今天谁要陷害我
# def __init__(self, x):
# self.val = x
# self.next = None
#
# 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
#
#
# @param lists ListNode类一维数组
# @return ListNode类
#
class Solution:
def mergeKLists(self , lists: List[ListNode]) -> ListNode:
# write code here
return self.divide_merge(lists, 0, len(lists)-1)
def merge(self,pHead1,pHead2):
if not pHead1:
return pHead2
if not pHead2:
return pHead1
if pHead1.val<pHead2.val:
pHead1.next = self.merge(pHead1.next, pHead2)
return pHead1
else:
pHead2.next = self.merge(pHead1, pHead2.next)
return pHead2
def divide_merge(self,lists,left,right):
if left>right:return
if left==right:
return lists[left]
else:
mid = (left+right)//2
return self.merge(self.divide_merge(lists, left, mid),self.divide_merge(lists, mid+1, right))
运行时间:1842ms 超过0.39% 用Python 3提交的代码 占用内存:115612KB 超过0.10%用Python 3提交的代码