原题
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
解法
先将所有链表的值放到一个list里, 升序排列list, 然后根据list的值构造一个链表.
Time: O(k) + O(n), k是链表的数量, n是节点的数量
Space: O(1)
代码
# 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
"""
whole = []
for l in lists:
whole += self.getList(l)
whole.sort()
dummy = p = ListNode(0)
for val in whole:
p.next = ListNode(val)
p = p.next
return dummy.next
def getList(self, l):
res = []
while l:
res.append(l.val)
l = l.next
return res