Merge k Sorted Lists

注意审题,题目中是listnode链表,不是list

# Definition for singly-linked list.
# class ListNode(object):
#     def __init__(self, x):
#         self.val = x
#         self.next = None

class Solution(object):
    def mergeTwoList(self, l1, l2):
        dummy = ListNode(0)
        tmp = dummy
        while l1 != None and l2 != None:
            if l1.val < l2.val:
                tmp.next = l1
                l1 = l1.next
            else:
                tmp.next = l2
                l2 = l2.next
            tmp = tmp.next
        if l1 != None:
            tmp.next = l1
        else:
            tmp.next = l2
        return dummy.next
        
    def helper(self, start, end, lists):
        if start == end:
            return lists[start]
        mid = (start + end) // 2
        return self.mergeTwoList(self.helper(start, mid, lists), self.helper(mid + 1, end, lists))
    def mergeKLists(self, lists):
        """
        :type lists: List[ListNode]
        :rtype: ListNode
        """
        if len(lists) == 0:
            return []
        return self.helper(0, len(lists) - 1, lists)
        

 

posted @ 2017-07-13 15:54  hafgyyb  阅读(91)  评论(0)    收藏  举报