求解LeetCode 876. Middle of the Linked List:我的代码为何失效?
你的代码问题分析
核心问题:陷入死循环
你的while循环里,head.next这行只是读取了当前节点的next属性,但没有把head更新为下一个节点。这会导致循环条件while head永远为真——head一直停留在初始的第一个节点,永远不会变成None,程序会无限循环下去,最终超时或耗尽内存。
正确的写法应该改成head = head.next,这样每次循环才会让指针向后移动,直到遍历完整个链表。
次要问题:冗余的长度变量l
你额外维护了l变量来统计链表长度,但完全可以直接用len(arr)获取长度,和参考解法一样,这样能减少变量维护的成本,避免可能的计数错误。
修正后的代码
class Solution: def middleNode(self, head: Optional[ListNode]) -> Optional[ListNode]: arr = [] while head: arr.append(head) head = head.next # 修正:移动指针到下一个节点 return arr[len(arr)//2]
内容的提问来源于stack exchange,提问作者Jean
相关产品推荐
相关产品推荐

