我正在尝试解决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行(解决方案)
2条答案
按热度按时间oyjwcjzk1#
你说得对,第二个解决方案就是不起作用。
ktca8awb2#
@兰伯特说得对。
您在这里比较的特定解决方案不会逆转任何情况。将链表转换为新变量需要很长的时间。