【发布时间】:2021-06-05 09:38:58
【问题描述】:
我正在使用以下代码反转一个单链表:
class ListNode:
def __init__(self, val=0, next=None):
self.val = val
self.next = next
class Solution:
def reverseList(self, head: ListNode) -> ListNode:
if not head:
return []
curr = head.next
prev = head
while curr:
curr.next = prev
curr = curr.next
prev = prev.next
return curr
我收到了 TIME OUT 错误 - 但我似乎看不到问题所在。当我在纸上运行循环时,它似乎工作正常,任何想法是什么导致的,我认为循环不会终止?谢谢
【问题讨论】:
-
我确定你的循环是错误的。行:
curr.next = prev立即覆盖curr.next。现在您丢失了存储在curr.next的内容。我假设你已经让你的数据结构是循环的,而之前它是非循环的。现在你进入一个无限循环。 -
感谢 quamrana,但它“覆盖”它是什么意思?我的理解是上面的 curr.next = prev 将帮助列表中的下一项指向前一项,从而反转链表。
-
是的,你是对的,
curr.next = prev需要在循环中的某个时间点完成,但你现在不知道curr.next曾经指向哪里。你需要回到你的纸笔练习。 -
哦,我现在看到了,谢谢!后面的那一行没有多大意义
标签: python while-loop linked-list