mergeTwoLists:在Python中内存是如何工作的?

2024-09-23 16:33:45 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在处理leetcode中的合并两个列表问题。这个问题需要以排序的方式合并两个链表。解决方案代码如下所示。在代码中,变量prev不断更新,最终只有一个节点来自l1或l2。然而,prehead似乎随时都会记住上一个下一个已执行。但是,它不会记住上一个=上一个下一个已执行。你知道吗

例如,如果您为l1 = 1->3->4, l2 = 1->2->4运行此代码。最后:

prev = ListNode{val: 4, next: ListNode{val: 4, next: None}}. 

prehead = ListNode{val: -1, next: ListNode{val: 1, next: ListNode{val: 1, next: ListNode{val: 2, next: ListNode{val: 3, next: ListNode{val: 4, next: ListNode{val: 4, next: None}}}}}}}
        prehead = ListNode(-1)

        prev = prehead
        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

        # exactly one of l1 and l2 can be non-null at this point, so connect
        # the non-null list to the end of the merged list.
        prev.next = l1 if l1 is not None else l2

        return prehead.next

Tags: andofthe代码nonel1ifval