【python-leetcode23-多路归并】合并k个排序链表

【python-leetcode23-多路归并】合并k个排序链表,第1张

概述合并 k 个排序链表,返回合并后的排序链表。请分析和描述算法的复杂度。 示例: 输入:[ 1->4->5, 1->3->4, 2->6]输出: 1-&

合并 k 个排序链表,返回合并后的排序链表。请分析和描述算法的复杂度。

示例:

输入:
[
  1->4->5,
  1->3->4,
  2->6
]
输出: 1->1->2->3->4->4->5->6

 

思路:每次两两合并,然后将合并的结果重新添加到列表中,直到只剩下一个链表。

# DeFinition for singly-linked List.# class ListNode:     def __init__(self,x):         self.val = x         self.next = Noneclass Solution:    def mergeKLists(self,Lists: List[ListNode]) -> ListNode:        while len(Lists)>1:            a=Lists.pop() if len(Lists)>0 else None            b=Lists.pop()  None            Lists.insert(0,self.mergeTwoLists(a,b))        return None if len(Lists)<1  Lists[0]    def mergeTwoLists(self,l1,l2):        newhead=ListNode(0)        t=newhead        while l1 and l2:            if l1.val<=l2.val:                t.next=ListNode(l1.val)                l1=l1.next            :                t.next=ListNode(l2.val)                l2=l2.next            t=t.next        if l1:            t.next=l1         l2:            t.next=l2        return newhead.next

 

总结

以上是内存溢出为你收集整理的【python-leetcode23-多路归并】合并k个排序链表全部内容,希望文章能够帮你解决【python-leetcode23-多路归并】合并k个排序链表所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1190044.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-03
下一篇 2022-06-03

发表评论

登录后才能评论

评论列表(0条)

保存