23. Merge k Sorted Lists
  1. Merge k Sorted Lists
# Definition for singly-linked list.
# class ListNode:
#     def __init__(self, val=0, next=None):
#         self.val = val
#         self.next = next
class Solution:
    def mergeKLists(self, lists: List[Optional[ListNode]]) -> Optional[ListNode]:
        lists = [l for l in lists if l!=None]
        
        if len(lists) == 0:
            return None
        
        if len(lists) == 1:
            return lists[0]
        
        def getList(r):
            if r == None:
                return []
            l = []
            while r != None:
                l.append(r.val)
                r = r.next
            return l
        l = []
        for r in lists:
            l += getList(r)
        l = sorted(l)
        # print(l)
        for i,v in enumerate(l):
            newNode = ListNode(v,None)
            if i == 0:
                mlist = newNode
                mlistR = mlist
            else:
                mlistR.next = newNode
                mlistR = mlistR.next
        return mlist
Comments (0)