在python中反转单链表,而不使用临时变量

deyfvvtc  于 2021-08-20  发布在  Java
关注(0)|答案(2)|浏览(256)

我正在尝试解决leetcode上的一些问题。
我完成了反向链表问题,它基本上要求你反向单链表。我的解决办法是:

def reverseList(self, head):
    curr = head
    prev = None
    if head != None:
        while (curr.next):
            temp = curr.next
            curr.next = prev
            prev = curr
            curr = temp
        curr.next = prev
    return curr

在下一行中更改下一个节点的值之前,我使用了一个临时值来跟踪当前节点之后的原始下一个节点。
然而,当我将我的解决方案与其他解决方案进行比较时,似乎根本不需要临时值。下面是一个示例解决方案:

def reverseList(self, head):
    curr, prev = head, None
    while curr:
        curr.next = prev
        prev = curr
        curr = curr.next
    return prev

没有使用临时值,我正在试图找出原因。下图是我对解决方案中发生的情况的想象:

为什么代码仍然可以赋值 curr = curr.next (溶液第4行)之后 curr.next 是变异的吗(第6行(解决方案)

oyjwcjzk

oyjwcjzk1#

你说得对,第二个解决方案就是不起作用。

ktca8awb

ktca8awb2#

@兰伯特说得对。
您在这里比较的特定解决方案不会逆转任何情况。将链表转换为新变量需要很长的时间。

相关问题