为什么 Prev 是返回变量解决方案?

why is prev the return variable solution?

提问人:Erick Pruneda 提问时间:7/9/2023 更新时间:7/9/2023 访问量:25

问:

所以我找到了 leetcode #206(反向链表)的这个代码解决方案,我一直想知道为什么变量 prev 是解决方案?

代码是:

class Solution:
    def reverseList(self, head: Optional[ListNode]) -> Optional[ListNode]:
        # setting pointers
        prev, curr = None, head

        while curr is not None:
            nxt = curr.next
            curr.next = prev
            prev = curr
            curr = nxt
        return prev

让我们设置一个 [1, 2, 3, 4, 5] 链表 在迭代结束时,prev 指向最后一个节点 (5)。那么,如果 prev 只是一个节点而不是整个链表,为什么返回 prev 是解决方案。

Python 函数 while-loop linked-list

评论

1赞 user19077881 7/9/2023
你会得到一个链接列表。当它被反转时,新头成为原来的最后一个节点,因此解决方案将其作为新链接列表的头返回。您可以使用该头来浏览整个列表。leetcode 解决方案包括 Python 中的解决方案代码处理数据的视频。head

答:

1赞 BoppreH 7/9/2023 #1

因为在链表中,每个节点本身就是一个列表。空列表由值表示,任何非 None 值都被视为列表的第一个元素。但更重要的是,该头节点将具有指向下一个值的链接,依此类推递归,因此您拥有遍历整个列表所需的所有信息。None

您也可以将链接视为一个子切片:大致相当于 ,即从第二个元素开始的切片。而且会.所以只是,即整个列表。head.nextlist[1:]head.next.nextlist[2:]headlist[0:]