算法提高之LeetCode刷题数据结构和算法分析

合并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 不要给自己或别人打标签,也不要被标签吓到

上一篇下一篇

猜你喜欢

热点阅读