zoukankan      html  css  js  c++  java
  • 23. 合并K个升序链表

    给你一个链表数组,每个链表都已经按升序排列。

    请你将所有链表合并到一个升序链表中,返回合并后的链表。

    示例 1:

    输入:lists = [[1,4,5],[1,3,4],[2,6]]
    输出:[1,1,2,3,4,4,5,6]
    解释:链表数组如下:
    [
    1->4->5,
    1->3->4,
    2->6
    ]
    将它们合并到一个有序链表中得到。
    1->1->2->3->4->4->5->6
    示例 2:

    输入:lists = []
    输出:[]
    示例 3:

    输入:lists = [[]]
    输出:[]
     

    提示:

    k == lists.length
    0 <= k <= 10^4
    0 <= lists[i].length <= 500
    -10^4 <= lists[i][j] <= 10^4
    lists[i] 按 升序 排列
    lists[i].length 的总和不超过 10^4

    # 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:
            n=len(lists)
            
            #pre-operation
            if n==0:return None
            if n==1:return lists[0]
            if n==2:return self.mergeTwoLists(lists[0],lists[1])
            
            #divid and conquer
            mid=n//2
            return self.mergeTwoLists(self.mergeKLists(lists[:mid]),self.mergeKLists(lists[mid:n]))
    
        def mergeTwoLists(self,l1:ListNode,l2:ListNode)->ListNode:
            res=ListNode(0)
            q1,q2,q3=l1,l2,res
            while q1 or q2:
                if q1 and q2:
                    if q1.val<q2.val:
                        q3.next=ListNode(q1.val)
                        q1=q1.next
                    else:
                        q3.next=ListNode(q2.val)
                        q2=q2.next
                    q3=q3.next
                elif q1:
                    q3.next=q1
                    break
                else:
                    q3.next=q2
                    break
                
            return res.next
  • 相关阅读:
    Halcon二维仿射变换实例探究
    redis主从+哨兵实战
    单点安装redis+哨兵
    一个学习技术不错的网站
    reset master 不能乱用呀
    MySQL 5.7基于GTID的主从复制实践
    『浅入深出』MySQL 中事务的实现
    使用二进制包安装mysql
    jenkins+gitlab
    mysql的Innodb存储引擎提一嘴
  • 原文地址:https://www.cnblogs.com/xxxsans/p/13725913.html
Copyright © 2011-2022 走看看