Description
Merge k sorted linked lists and return it as one sorted list. Analyze and describe its complexity.
Example
Input:
[
1->4->5,
1->3->4,
2->6
]
Output: 1->1->2->3->4->4->5->6
Submissions
我的解题思路与21题类似,首先遍历lists中的链表,将链表中的值依次添加到定义的列表out中。然后利用sort()函数将列表中的值从小到大排序。得到排好序的列表后,再定义一条链表,把它们依次存入,最后返回链表。算法复度度为O(nlog(n))
实现代码如下:
# Definition for singly-linked list.
# class ListNode:
# def __init__(self, x):
# self.val = x
# self.next = None
class Solution:
def mergeKLists(self, lists: List[ListNode]) -> ListNode:
out=[]
for i in lists:
while i:
out.append(i.val)
i=i.next
out.sort()
pre = ListNode(-1)
l3 = pre
for i in range(len(out)):
l3.next=ListNode(out[i])
l3 = l3.next
return pre.next