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

LeetCode两数相加Python解法提交报错:ListNode对象无reverse属性

两数相加提交报错解决方案

核心结论

代码本身存在逻辑问题,和LeetCode的IDE设置无关。

问题原因

  • 本地测试时你定义的l1、l2是Python内置的list类型,自带reverse()方法,也支持直接遍历,因此运行正常。
  • LeetCode的addTwoNumbers方法接收的入参是题目预定义的ListNode单链表实例,该类仅声明了val(当前节点存储的值)和next(指向后继节点的指针)两个属性,没有实现reverse方法,也不支持直接for循环迭代,因此调用l1.reverse()会直接触发属性不存在的报错。此外你代码最后返回的是列表类型,而题目要求返回值为ListNode类型,就算前面的报错修复,返回值类型不匹配也无法通过用例。

适配修改方案

如果要沿用你现有的「转整数相加再转链表」的思路,只需要补充两个工具方法,分别实现ListNode到列表、列表到ListNode的转换即可,修改后可通过的代码如下:

# Definition for singly-linked list.
# class ListNode(object):
#     def __init__(self, val=0, next=None):
#         self.val = val
#         self.next = next
class Solution(object):
    # 工具方法:ListNode转普通列表
    def listnode_to_list(self, node):
        res = []
        while node:
            res.append(node.val)
            node = node.next
        return res
    
    # 工具方法:普通列表转ListNode
    def list_to_listnode(self, lst):
        dummy = ListNode()
        cur = dummy
        for num in lst:
            cur.next = ListNode(num)
            cur = cur.next
        return dummy.next

    def addTwoNumbers(self, l1, l2):
        """
        :type l1: ListNode
        :type l2: ListNode
        :rtype: ListNode
        """
        # 先转成普通列表再执行你原来的逻辑
        l1_list = self.listnode_to_list(l1)
        l2_list = self.listnode_to_list(l2)

        l1_list.reverse()
        l2_list.reverse()

        res1 = int("".join([str(x) for x in l1_list]))
        res2 = int("".join([str(x) for x in l2_list]))

        ans = res1 + res2
        ans_list = [int(x) for x in str(ans)]
        ans_list.reverse()
        
        # 最后转成ListNode返回
        return self.list_to_listnode(ans_list)

补充说明

也可以直接按单链表逐位相加的方式实现,不需要额外的类型转换,空间复杂度更低,上述修改是在你原有逻辑基础上改动最小的方案。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 17:24:06