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
相关产品推荐
相关产品推荐

