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

LeetCode234回文链表问题:为何复制反转后用==判断链表不等?

为什么反转后的链表和复制的链表用==判断返回False?

在Python中,对于ListNode这种自定义类,默认的==运算符比较的是对象的内存地址(即两个变量是否指向同一个内存中的对象),而不是比较对象的内容是否一致。

你用deepcopy复制出的dup和反转后得到的prev是两个完全独立的链表对象——它们的节点值和链表结构虽然看起来一模一样,但各自占据不同的内存空间,所以用==判断时会返回False。

如果要判断两个链表内容是否完全相同(也就是题目要求的回文验证),需要手动遍历两个链表,逐个比较对应节点的val,同时确保两个链表同步遍历结束:

修改后的代码如下:

# Definition for singly-linked list.
# class ListNode:
#     def __init__(self, val=0, next=None):
#         self.val = val
#         self.next = next

from copy import deepcopy

class Solution:
    def isPalindrome(self, head: Optional[ListNode]) -> bool:
        prev,curr=None,head
        dup=deepcopy(head)
        # 反转原链表
        while curr:
            nxt=curr.next
            curr.next=prev
            prev=curr
            curr=nxt
        # 逐个比较节点内容
        while dup and prev:
            if dup.val != prev.val:
                return False
            dup = dup.next
            prev = prev.next
        # 确保两个链表都遍历完毕,避免长度不一致的情况
        return dup is None and prev is None

这样修改后,就能正确验证两个链表的内容是否一致,从而判断原链表是否为回文链表。

内容的提问来源于stack exchange,提问作者Tarush Gupta

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 10:52:16