Q:
合并 k 个排序链表,返回合并后的排序链表。请分析和描述算法的复杂度。
示例:
输入: [ 1->4->5, 1->3->4, 2->6 ] 输出: 1->1->2->3->4->4->5->6
链接:https://leetcode-cn.com/problems/merge-k-sorted-lists/description/
思路:先排序,再重新把链表穿起来
代码:
# Definition for singly-linked list.
# class ListNode(object):
# def __init__(self, x):
# self.val = x
# self.next = None
class Solution(object):
def mergeKLists(self, lists):
"""
:type lists: List[ListNode]
:rtype: ListNode
"""
tmp = []
for l in lists:
head = l
while head:
tmp.append((head,head.val))
head = head.next
tmp.sort(key=lambda tmp: tmp[1])
if not tmp:
return None
h = ListNode(-1)
h.next = tmp[0][0]
tmp[0][0].next = None
for i in range(1,len(tmp)):
tmp[i-1][0].next = tmp[i][0]
tmp[i][0].next = None
return h.next