合并k个排序的链表,并将其作为一个排序表返回。分析并描述其复杂性。
Input: [ 1->4->5, 1->3->4, 2->6 ]
Output: 1->1->2->3->4->4->5->6
Clue: 建立一个list将节点对应的值存到list里面,然后对list进行排序, 将里面的点输出为ListNode形式
# 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[ListNode]) -> ListNode:
l=[]
res=head=ListNode()
for i in lists:
while i:
l.append(i.val)
i=i.next
for j in sorted(l):
res.next=ListNode(j)
res=res.next
return head.next
时间复杂度O(nlogn), n为所有结点的个数。将所有结点存入list中需要O(n),对list进行排序需要O(nlogn),将list转换为listnode需要O(n)。