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

LeetCode回文链表问题:两处技术疑问求助

关于LeetCode链表表示与回文链表代码异常的解决

一、LeetCode中head = [1,2,3,4]的含义

这是LeetCode的简化输入写法,别误解成头节点等于这个数组。它的实际意思是:用数组直观展示整个链表的结构——数组里的元素依次对应链表节点的val值,[1,2,3,4]代表的是以值为1的节点作为头节点,后续依次连接值为2、3、4的节点的完整链表。你理解的“头节点对应数组第一个元素”是对的,LeetCode用数组写法只是为了让你快速看懂链表结构,实际代码运行时传入的是链表的头节点对象,不是这个数组。

二、回文链表判断代码异常的原因及修复

你遇到的问题完全是创建节点的方式错了:

  • 你写的node = ListNode([1,2])是把列表[1,2]直接赋值给了单个节点的val属性,而不是创建两个节点组成的链表。遍历的时候vals列表里只会有一个元素[1,2],反转后和自身当然相等,所以永远返回True。
  • 正确的做法是手动构建链表:
    # 构建1->2的链表
    head = ListNode(1)
    head.next = ListNode(2)
    # 调用判断方法
    Solution().isPalindrome(head)
    
  • 要是经常需要从数组转链表,也可以写个小工具函数:
    def arr_to_linked_list(arr):
        dummy = ListNode(0)
        curr = dummy
        for num in arr:
            curr.next = ListNode(num)
            curr = curr.next
        return dummy.next
    
    # 用工具函数创建链表
    head = arr_to_linked_list([1,2])
    Solution().isPalindrome(head)
    

这样处理后,vals会变成[1,2],反转后是[2,1],两者不相等,就能返回正确的False了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 05:25:18