LeetCode 2 两数相加
从超市收银说起
想象你是一个超市收银员,正在计算两位顾客的购物总和。每位顾客的商品都按照从个位到高位的顺序摆放(比如54元就是先放4元商品,再放50元商品)。你需要一个一个地加起来,遇到超过10元的就进位。这个场景,恰恰就是我们今天要解决的链表两数相加问题的真实写照。
问题描述
LeetCode第2题"两数相加"要求:给你两个非空的链表,表示两个非负的整数。它们每个节点存储一个数字,并且是按照逆序方式存储的。请你将这两个数相加,并以相同形式返回一个表示和的链表。
例如:
输入:2 → 4 → 3, 5 → 6 → 4
解释:342 + 465 = 807
输出:7 → 0 → 8
输入:9 → 9 → 9, 1
解释:999 + 1 = 1000
输出:0 → 0 → 0 → 1
输入:0, 0
输出:0
思路分析:模拟手算加法
就像我们在纸上做加法一样:
- 从最低位开始,两个数字相加
- 如果和超过10,需要进位
- 进位的1要加到下一位的计算中
这个过程完美映射到链表遍历上:从头节点(个位)开始,同时遍历两个链表,处理好进位关系。
代码实现与详解