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

Python实现LeetCode第2题两数相加出现运行超时问题求助

问题排查

1 死循环根因

  • 你代码中遍历输入链表的逻辑没有实际移动指针:代码里写的l1.next、l2.next仅读取了节点的next属性,没有赋值给l1、l2本身,导致两个输入链表的指针永远停在头节点位置,循环判断条件l1 != None or l2 != None or carry永远成立,直接触发死循环超时。

2 其他功能性错误

  • 结果链表没有维护移动指针:你每次直接给result.next赋值,会覆盖上一轮生成的节点,最终返回的结果只会保留最后一次计算的节点,前面所有位的结果都会丢失。

修正后代码

# 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 addTwoNumbers(self, l1, l2):
        """
        :type l1: ListNode
        :type l2: ListNode
        :rtype: ListNode
        """
        # 哑节点,方便后续返回结果
        dummy = ListNode()
        # 维护当前结果链表的移动指针
        cur = dummy
        carry = 0 
    
        while l1 != None or l2 != None or carry:
            v1 = l1.val if l1 else 0
            v2 = l2.val if l2 else 0
        
            total = v1 + v2 + carry 
            carry = total // 10
            total = total % 10
        
            cur.next = ListNode(total)
            # 移动结果指针
            cur = cur.next
            
            # 移动输入链表指针,补充赋值操作
            if l1:
                l1 = l1.next
            if l2:
                l2 = l2.next
        
        # 返回哑节点后面的真实结果头节点
        return dummy.next

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 17:18:03