[每日一题][找工作第22天][2025-10-14] Leetcode 2. 两数相加(难度标成中等,实际上没有什么难度)

题目

2. 两数相加
给你两个 非空 的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字。
请你将两个数相加,并以相同形式返回一个表示和的链表。
你可以假设除了数字 0 之外,这两个数都不会以 0 开头。
 
示例 1:

输入:l1 = [2,4,3], l2 = [5,6,4]
输出:[7,0,8]
解释:342 + 465 = 807.
示例 2:
输入:l1 = [0], l2 = [0]
输出:[0]
示例 3:
输入:l1 = [9,9,9,9,9,9,9], l2 = [9,9,9,9]
输出:[8,9,9,9,0,0,0,1]
 
提示:

  • 每个链表中的节点数在范围 [1, 100] 内
  • 0 <= Node.val <= 9
  • 题目数据保证列表表示的数字不含前导零

我的代码(Python)

# Definition for singly-linked list.
# class ListNode:
#     def __init__(self, val=0, next=None):
#         self.val = val
#         self.next = next
class Solution:
    def addTwoNumbers(self, l1: Optional[ListNode], l2: Optional[ListNode]) -> Optional[ListNode]:
        if not l1:
            return l2
        if not l2:
            return l1
        result = ListNode(None)
        t1, t2 = l1, l2
        tmp = 0
        pr = result
        while t1 and t2:
            tr = t1.val + t2.val + tmp
            tmp = tr // 10
            t1 = t1.next
            t2 = t2.next
            if pr.val != None:
                newNode = ListNode(tr % 10)
                pr.next = newNode
                pr = newNode
            else:
                pr.val = tr % 10
        leftT = None
        if t1:
            leftT = t1
        elif t2:
            leftT = t2
        while leftT:
            currVal = leftT.val + tmp
            tmp = currVal // 10
            if pr.val != None:
                newNode = ListNode(currVal % 10)
                pr.next = newNode
                pr = newNode
            else:
                pr.val = currVal % 10
            leftT = leftT.next
        while tmp:
            if pr.val != None:
                newNode = ListNode(tmp % 10)
                pr.next = newNode
                pr = newNode
            else:
                pr.val = tmp % 10
            tmp //= 10
        return result

点评

如果不是逆序,还需要判断位数等操作,还有些难度;这个就是直接加就行了,需要考虑的的细节就是进位。
两个细节处容易忽略进位:当一个数的位数算完另一个还有时,或者两个数都加完了的时候。


baddif@gmail.com

AI简历优化站

Nonpareil.me:优化简历,助力职场
开源代码

AI求职跟踪器(建设中)

开源代码

主站(建设中)

Nonpareil Me

相关平台

Github Issues / Notion / Blog

发表评论

您的邮箱地址不会被公开。 必填项已用 * 标注

滚动至顶部