题目描述
思路解析动画文字版
思路一句话:用栈把「高位在前」翻成「低位先出」,再逐位相加、头插结果,就回到了熟悉的竖式加法。下面一步步演给你看。
上两行是 A、B(高位在前,头节点是最高位),最下一行是结果。先把 A、B 各压进一个栈,进位 carry 从 0 开始。
两个栈顶都指向各自的最低位(最右节点)。我们从这里开始逐位弹栈相加,结果从右往左、用头插法一格格补上。
弹出两个栈顶(第 0 低位):a=3,b=7,进位 carry=0。cur = 3+7+0 = 10。
10 % 10 = 0,头插到结果最前面(这一格);10 >= 10 ? 是 → 进位 carry 变为 1,带到更高一位。
弹出两个栈顶(第 1 低位):a=8,b=5,进位 carry=1。cur = 8+5+1 = 14。
14 % 10 = 4,头插到结果最前面(这一格);14 >= 10 ? 是 → 进位 carry 变为 1,带到更高一位。
弹出两个栈顶(第 2 低位):a=5,b=8,进位 carry=1。cur = 5+8+1 = 14。
14 % 10 = 4,头插到结果最前面(这一格);14 >= 10 ? 是 → 进位 carry 变为 1,带到更高一位。
弹出两个栈顶(第 3 低位):a=9,b=6,进位 carry=1。cur = 9+6+1 = 16。
16 % 10 = 6,头插到结果最前面(这一格);16 >= 10 ? 是 → 进位 carry 变为 1,带到更高一位。
弹出两个栈顶(第 4 低位):a=2,b=9,进位 carry=1。cur = 2+9+1 = 12。
12 % 10 = 2,头插到结果最前面(这一格);12 >= 10 ? 是 → 进位 carry 变为 1,带到更高一位。
弹出两个栈顶(第 5 低位):a=7,b=4,进位 carry=1。cur = 7+4+1 = 12。
12 % 10 = 2,头插到结果最前面(这一格);12 >= 10 ? 是 → 进位 carry 变为 1,带到更高一位。
弹出两个栈顶(第 6 低位):a=6,b=8,进位 carry=1。cur = 6+8+1 = 15。
15 % 10 = 5,头插到结果最前面(这一格);15 >= 10 ? 是 → 进位 carry 变为 1,带到更高一位。
弹出两个栈顶(第 7 低位):a=4,b=5,进位 carry=1。cur = 4+5+1 = 10。
10 % 10 = 0,头插到结果最前面(这一格);10 >= 10 ? 是 → 进位 carry 变为 1,带到更高一位。
弹出两个栈顶(第 8 低位):a=8,b=3,进位 carry=1。cur = 8+3+1 = 12。
12 % 10 = 2,头插到结果最前面(这一格);12 >= 10 ? 是 → 进位 carry 变为 1,带到更高一位。
两个栈都空了,但 carry 还是 1!别漏:要再头插一个最高位节点 1。
头插最高位 1,结果链表完成(高位在前):1205226440(即 1205226440)。
边界先想清,尤其是进位一路顶到最高位、要在前面新加一节。
两个高频追问,第二个最能体现对方向的理解。
参考代码
def addTwoNumbers(l1, l2): s1, s2 = [], [] while l1: s1.append(l1.val); l1 = l1.next while l2: s2.append(l2.val); l2 = l2.next carry = 0; head = None while s1 or s2 or carry: a = s1.pop() if s1 else 0 b = s2.pop() if s2 else 0 carry, d = divmod(a + b + carry, 10) node = ListNode(d); node.next = head; head = node # 头插 return head复杂度
- 时间:O(m+n),入栈一遍 + 弹栈相加一遍
- 空间:O(m+n),两个栈各存一条链表
易错点
面试追问把动画讲成自己的话
追问不让用栈、也不让反转链表,还能做吗?
追问和 LC2(低位在前)有什么本质区别?
这道题到这就讲完了。动画和文字是同一套思路——别光看,关掉页面自己默写一遍。然后顺着主线继续:
设计链表
LeetCode 707 · 中等 · 沿着 链表套路 继续往下推进
把这道题真正学会,再走
图解算法年卡 ¥99 /年
- ✓本题每步动画的吴师兄语音讲解(全站陆续覆盖)
- ✓小欧带 8 步通关训练——追问到不看答案也能写对、能 30 秒讲给面试官听
- ✓学习报告,记录每道题的掌握程度
76k+ GitHub Star · 吴师兄开源图解算法,几十万开发者在看的算法讲解
想成体系刷透这类套路?去图解算法专题