您好,我在执行leetcode Q21时发现了以下解决方案:https://leetcode.com/problems/merge-two-sorted-lists/discuss/9735/Python-solutions-(iteratively-recursively-iteratively-in-place)。
# iterative
def mergeTwoLists(self, l1, l2):
"""
:type l1: ListNode
:type l2: ListNode
:rtype: ListNode
"""
dummy = ret = ListNode(0)
while l1 and l2:
if l1 < l2:
ret.next = l1
l1 = l1.next
else:
ret.next = l2
l2 = l2.next
ret = ret.next
ret.next = l1 or l2
return dummy.next
我不太明白为什么返回dummy.next
会给出正确的答案。
根据我的理解,dummy = ret = ListNode(0)
是
tmp = ListNode(0)
dummy = tmp
ret = tmp
因此,无论您如何修改ret都不应影响dummy的值。我猜想它与Python如何执行复制/赋值的深层机制有关,但是我找不到关于此问题的好的文档。在解释问题或提供文件方面的任何帮助将不胜感激!