给定两个非空的链表,表示两个非负整数。 数字以相反的顺序存储,每个节点包含一个数字。 添加两个数字并将其作为链表返回。
可以假设两个数字不包含任何前导零,除了数字0本身
举例:
输入:(2 -> 4 -> 3) + (5 -> 6 -> 4)
输出:7 -> 0 -> 8
分析:使用变量跟踪进位,并从包含最低有效数字的列表头开始模拟逐位数字和。
两个相加数字的可视化:342 + 465 =807。
每个节点包含单个数字,数字以相反的顺序存储。
就如在纸上相加两个数字一样,我们先将最低有效位的数字相加,即l1和l2的头部。由于每个数字都在0~9之间,所以两个数字相加可能会导致“溢出”(例如5+7=12)。这时,我们将当前数字设为2,并将carry=1移入下一次迭代。carry必须为0或者1,两位数最大的可能为9+9+1(进位)=19,carry不可能为2及以上的数字。
伪代码如下:
- 将当前节点初始化为返回列表的虚拟头。
- 初始化进位(carry)为0。</