我正在研究 leetcode 206 题并想出了:
class Solution(object):
def reverseList(self, head):
"""
:type head: ListNode
:rtype: ListNode
"""
if head:
if head.next:
curr1 = head
curr2 = head.next
curr1.next = None
while curr2:
#curr1, curr2.next, curr2 = curr2, curr1, curr2.next
#curr2.next, curr2, curr1 = curr1, curr2.next, curr2
curr1, curr2, curr2.next = curr2, curr2.next, curr1
return curr1
return head
上面的代码在任一注释掉的行的情况下都有效,但由于 while 循环中当前未注释的行的时间而失败。
谁能解释一下这是为什么?
我尝试更改必须更改的变量的顺序,这会以某种方式导致不同的输出。即使变量交换到相同的其他变量,只是位置不同。
不同的“交换”正在改变代码的流程。如果您使用调试器,您会看到这一点
你可以这样做:
class Solution:
def reverseList(self, head):
if not head or not head.next:
return head
first = ListNode(head.val)
last = head.next
while last:
first = ListNode(last.val, first)
last = last.next
return first