作为链表数据结构的学习者,我正在练习Leetcode问题“反向链表”,我有自己的解决方案,但不知道为什么错了,任何人都可以分享一些指导吗?真的很感激!
Leetcode问题:
反向单链列表。
例:
输入:1-> 2-> 3-> 4-> 5-> NULL
输出:5-> 4-> 3-> 2-> 1-> NULL
我的代码:
class Solution(object):
def reverseList(self, head):
"""
:type head: ListNode
:rtype: ListNode
"""
prev = None
while head:
temp = head
temp.next = prev
head = head.next
prev = temp
return prev
但是,上述解决方案是错误的,但是可以通过如下方式在“ temp.next = prev”和“ head = head.next”之间切换位置来纠正:
class Solution(object):
def reverseList(self, head):
"""
:type head: ListNode
:rtype: ListNode
"""
prev = None
while head:
temp = head
head = head.next
temp.next = prev
prev = temp
return prev
对我来说,切换两个语句之间没有什么区别,它们为什么会不同?
这是循环开始之前的参考:
prev --> None
head --> [something| *-]-> [something| *-]-> ...
之后temp = head
:
prev --> None
head --> [something| *-]-> [something| *-]-> ...
^
|
temp ----+
之后temp.next = prev
:
prev --> None
head --> [something| *-]-> None .... -> [something| *-]-> ...
^
|
temp ----+
您不再需要引用列表后面的部分。head = head.next
简单地设置head
来None
为好。prev
然后将其设置为现在被截断的列表的开头。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句