合并K个排序链表
2020-04-26 本文已影响0人
_阿南_
题目:
合并 k 个排序链表,返回合并后的排序链表。请分析和描述算法的复杂度。
示例:
输入:
[
1->4->5,
1->3->4,
2->6
]
输出: 1->1->2->3->4->4->5->6
题目的理解:
每一个值比较,然后最小的值添加到链表上。
python实现
class Solution:
def mergeKLists(self, lists: List[ListNode]) -> ListNode:
resultFirst = ListNode(0)
result = resultFirst
lists = list(filter(lambda x: x is not None, lists))
while 0 < len(lists):
minNode = min(lists, key=lambda x: x.val)
result.next = ListNode(minNode.val)
result = result.next
lists.remove(minNode)
if minNode.next is not None:
lists.append(minNode.next)
return resultFirst.next
有一个小坑,不能在提交的时候添加
# Definition for singly-linked list.
class ListNode:
def __init__(self, x):
self.val = x
self.next = None
不然在提交的时候就不显示结果了。
想看最优解法移步此处
提交
ok成绩不是很喜人啊,复杂度O(n + n*n)
// END 不要给自己或别人打标签,也不要被标签吓到