思路:
1比较两个链表得到新的有序链表;
2比较新得到链表和第三个链表,以此类推;

本来想着用递归实现,但线上的IDE性能问题直接没有通过,可能是空间复杂度太大了,后面改用循环的方法

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
        res=None
        for ln in lists:
            res=self.mergeTwoLists(res, ln)
        return res
    def mergeTwoLists(self,l1,l2):
        #递归比较两个链表,直到遍历完其中一个,空间复杂度太大
        # if not l1 or not l2:
        #     return l1 if not l2 else l2
        # elif l1.val<l2.val:
        #     l1.next=self.mergeTwoLists(l1.next, l2)
        #     return l1
        # else:
        #     l2.next=self.mergeTwoLists(l1, l2.next)
        #     return l2

       #循环
        head=res=ListNode(0)
        while l1 or l2:
            if not l1 or not l2:
                head.next=l1 if not l2 else l2
                break

            elif l1.val<l2.val:
                head.next=l1
                head,l1=head.next,l1.next

            else:
                head.next=l2
                head,l2=head.next,l2.next
        return res.next