合并两个有序链表

Posted guguda

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了合并两个有序链表相关的知识,希望对你有一定的参考价值。

  • 方法1:迭代

    m、n为两个有序链表的长度

    时间复杂度:O(m+n)

    空间复杂度:O(1)

    class ListNode:
        def __init__(self, val=0, next=None):
            self.val = val
            self.next = next
    class Solution:
        def mergeTwoLists(self, l1: ListNode, l2: ListNode) -> ListNode:
            prehead = ListNode(-1)
            pre = prehead
            while l1 and l2:
                if l1.val <= l2.val:
                    pre.next = l1
                    l1 = l1.next
                else:
                    pre.next = l2
                    l2 = l2.next
                pre = pre.next
            pre.next = l1 if l1 is not None else l2
            return prehead.next
    
  • 方法2:递归

    m、n为两个有序链表的长度

    时间复杂度:O(m+n)

    空间复杂度:O(m+n)

    class ListNode:
        def __init__(self,val=0,next=None):
            self.val = val
            self.next = next
    class Solution:
        def mergeTwoLists(self, l1: ListNode, l2: ListNode) -> ListNode:
            if not l1:
                return l2
            if not l2:
                return l1
            if l1.val <= l2.val:
                l1.next = self.mergeTwoLists(l1.next,l2)
                return l1
            else:
                l2.next = self.mergeTwoLists(l1,l2.next)
                return l2
        
    

以上是关于合并两个有序链表的主要内容,如果未能解决你的问题,请参考以下文章

21. 合并两个有序链表

21. 合并两个有序链表

21. 合并两个有序链表

链表--合并两个有序链表

LC 合并两个有序链表

合并两个有序链表(java实现)