题解 | #合并k个已排序的链表#

合并k个已排序的链表

http://www.nowcoder.com/practice/65cfde9e5b9b4cf2b6bafa5f3ef33fa6

仿归并排序:

# class ListNode:
#     def __init__(self, x):
#         self.val = x
#         self.next = None

#
# 
# @param lists ListNode类一维数组 
# @return ListNode类
#
class Solution:
    def mergeKLists(self , lists ):
        # write code here
        # base case
        if len(lists) <= 1:
            if len(lists) == 1:
                return lists [0]
            else:
                return None
        
        iMid = int(len(lists)/2)
        pMergedLeft = self.mergeKLists(lists[:iMid])
        pMergedRight = self.mergeKLists(lists[iMid:])
        if pMergedLeft == None:
            return pMergedRight
        if pMergedRight == None:
            return pMergedLeft
        
        if pMergedLeft.val <= pMergedRight.val:
            pTemp = pMergedLeft
            pMergedLeft = pMergedLeft.next
        else:
            pTemp = pMergedRight
            pMergedRight = pMergedRight.next
        pRes = pTemp
        
        while pMergedLeft != None and pMergedRight != None:
            if pMergedLeft.val <= pMergedRight.val:
                pTemp.next = pMergedLeft
                pMergedLeft = pMergedLeft.next
            else:
                pTemp.next = pMergedRight
                pMergedRight = pMergedRight.next
            pTemp = pTemp.next
        
        if pMergedLeft != None:
            pTemp.next = pMergedLeft
        else:
            pTemp.next = pMergedRight
        return pRes
        
        
        
        
        
全部评论

相关推荐

04-29 00:12
小米_人力资源
牛客448863700号:也得看岗位呀,我还拿下美团呢,不说了送单了
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务