题目内容
合并 k 个排序链表,返回合并后的排序链表。请分析和描述算法的复杂度。
https://leetcode-cn.com/problems/merge-k-sorted-lists/
Merge k sorted linked lists and return it as one sorted list. Analyze and describe its complexity.
Input:
[
1->4->5,
1->3->4,
2->6
]
Output: 1->1->2->3->4->4->5->6
题目思路
我知道这道题作为hard难度,肯定应该有比较高超的方法。但是我偷懒了,所以用了很粗暴的记录所有数值然后排序最后串成链表的方法。如果按照原题的方法,我觉得可以考虑建立一个矩阵放入所有这些链表,然后每次遍历链表选择最小的那个进行递归求解。
程序代码
# 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
"""
new=[]
p=first=ListNode(-1)
for i in lists:
while i:
new.append(i.val)
i=i.next
new=sorted(new)
for i in new:
p.next=ListNode(i)
p=p.next
return first.next