加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

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

发布时间:2020-12-20 09:54:24 所属栏目:Python 来源:网络整理
导读:合并?k?个排序链表,返回合并后的排序链表。请分析和描述算法的复杂度。 示例: 输入: [ ? 1-4-5, ? 1-3-4, ? 2-6 ] 输出: 1-1-2-3-4-4-5-6 ? 思路:每次两两合并,然后将合并的结果重新添加到列表中,直到只剩下一个链表。 # Definition for singly-linked l

合并?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 = None

class 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

?

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读