pta两个有序链表的合并_21.合并两个有序链表

本文介绍了如何合并两个有序链表,包括暴力方法、递归解法和迭代解法。暴力法通过将链表元素放入列表并排序,然后创建新链表;递归法时间复杂度为O(m+n),空间复杂度也为O(m+n);迭代法使用哨兵节点,通过比较两链表节点并尾插,直至一方为空。
摘要由CSDN通过智能技术生成

070e223c13f3d73b9da197dba7895903.png

21.合并两个有序链表

思路一 暴力 借用外部空间

分别遍历两个链表,把数放到列表中,运用sort方法。再用尾插法,遍历列表,创建新的有序链表。

class Solution:
    def mergeTwoLists(self, l1:ListNode, l2:ListNode) -> ListNode:

        sum = []

        def list2num(node):
            while node != None:
                sum.append(node.val)
                node = node.next

        list2num(l1)
        list2num(l2)
        sum.sort()

        dummy_node = ListNode(-1)
        start_node = dummy_node 

        for i in sum:
            new = ListNode(i)
            dummy_node.next = new
            dummy_node = new
        return start_node.next

思路二 递归

  1. 时间复杂度 O(m+n)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值