zoukankan      html  css  js  c++  java
  • 合并多个有序链表

    Python解决方案1:

    # Definition for singly-linked list.
    # class ListNode(object):
    #     def __init__(self, x):
    #         self.val = x
    #         self.next = None
    
    class Solution(object):
        def mergeKLists(self, lists):
            """
            :type lists: List[ListNode]
            :rtype: ListNode
            """
            all_list = []
            for i in lists:
                all_list += self.tolist(i)
            all_list.sort()
            if not all_list:
                return None
            head = ListNode(all_list[0])
            out = head
            for i in all_list[1:]:
                head.next = ListNode(i)
                head = head.next
            return out
            
        def tolist(self,head):
            out = []
            while head:
                out.append(head.val)
                head = head.next
            return out

    Python解决方案2:

    # Definition for singly-linked list.
    # class ListNode(object):
    #     def __init__(self, x):
    #         self.val = x
    #         self.next = None
    
    class Solution(object):
        def mergeKLists(self, lists):
            """
            :type lists: List[ListNode]
            :rtype: ListNode
            """
        
            length = len(lists)
            if length == 0:
                return None
            else:
                while len(lists) > 1:
                    lists.append(self.mergeTwoLists(lists.pop(0),lists.pop(0)))
                return lists[0]
        def mergeTwoLists(self, l1, l2):
            """
            :type l1: ListNode
            :type l2: ListNode
            :rtype: ListNode
            """
            prev = ListNode(0)
            head = prev
            while l1 and l2:
                if l1.val <= l2.val:
                    prev.next = l1
                    l1 = l1.next
                else:
                    prev.next = l2
                    l2 = l2.next
                prev = prev.next
            if l1:
                prev.next = l1
            if l2:
                prev.next = l2  
            return head.next
  • 相关阅读:
    bash while until 循环用法
    微信小程序入门介绍
    jquery遍历
    jquery获取元素和DOM获取元素
    ul在div中水平居中效果
    一个文字在一个图片上水平居中,并且悬浮变大特效
    一个div在另一个div中垂直居中的方法
    layer插件的使用
    百度分享插件使用
    图标字体
  • 原文地址:https://www.cnblogs.com/wenqinchao/p/10620450.html
Copyright © 2011-2022 走看看