You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Leetcode ReorderList问题:最后while循环报'NoneType'无'next'属性错误

问题分析

你遇到的'NoneType' object has no attribute 'next'错误出现在最后一个合并循环中,核心原因是快慢指针初始化错误导致前半部分链表长度短于后半部分,合并过程中LP会先变为None,后续循环尝试访问LP.next时触发错误。

具体场景:

  • 当链表长度为奇数时(比如3个节点),你初始化的fastPointer = head.next.next会让快慢指针循环直接跳过,slowPointer停在第一个节点,前半部分仅1个节点,后半部分2个节点。
  • 合并时第一次迭代后,LP会被赋值为None(因为前半部分节点的next已被置空),但此时RP仍不为空,下一次循环执行tmpLP = LP.next时就会触发None属性错误。

另外,原代码未处理head为None的边界情况,这也是需要补全的点。

修正后的代码
# Definition for singly-linked list.
# class ListNode(object):
#     def __init__(self, val=0, next=None):
#         self.val = val
#         self.next = next
class Solution(object):
    def reorderList(self, head):
        # 处理空链表或单个节点的情况
        if not head or not head.next:
            return head
        
        # 快慢指针找中点,修正fastPointer初始化
        slowPointer, fastPointer = head, head.next
        while fastPointer and fastPointer.next:
            slowPointer = slowPointer.next
            fastPointer = fastPointer.next.next
        
        # 分割链表,断开前半部分尾部
        secondPointer = slowPointer.next
        slowPointer.next = None
        
        # 反转后半部分链表
        prev = None
        while secondPointer:
            tmp = secondPointer.next
            secondPointer.next = prev
            prev = secondPointer
            secondPointer = tmp
        
        # 合并两个链表
        LP, RP = head, prev
        while RP:
            tmpLP, tmpRP = LP.next, RP.next
            LP.next = RP
            RP.next = tmpLP
            
            LP = tmpLP
            RP = tmpRP

        return head
关键修复说明
  • 边界条件补全:新增if not head or not head.next,覆盖空链表和单个节点的情况,避免后续代码触发不必要的错误。
  • 快慢指针修正:将fastPointer初始化为head.next,确保慢指针最终停在链表前半部分的最后一个节点,保证前半部分长度≥后半部分长度,合并时LP不会先于RP变为None。
  • 分割链表时slowPointer.next = None,彻底断开前半部分与后半部分的连接,避免出现循环引用问题。

内容的提问来源于stack exchange,提问作者Bryan Tay

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 12:20:39