合并 k 个排序链表,返回合并后的排序链表。请分析和描述算法的复杂度。
示例:
输入: [ 1->4->5, 1->3->4, 2->6 ] 输出: 1->1->2->3->4->4->5->6
挺简单的。。链表不适合排序,那就从里头拿出来放数组排序,排完放回去就好了。。时间复杂度就看次数最高的,while循环次数,根据链表长度,所以最好的时间复杂度是N最差是n^2
# Definition for singly-linked list.
# class ListNode:
# def __init__(self, x):
# self.val = x
# self.next = None
class Solution:
def mergeKLists(self, lists):
"""
:type lists: List[ListNode]
:rtype: ListNode
"""
num_list = []
if lists == []:
return []
else:
for i in lists:
while i:
num_list.append(i.val)
i = i.next
num_list.sort()
head = ListNode(0)
first = head
for i in num_list:
head.next = ListNode(i)
head = head.next
return first.next