<h3>思路</h3>
<ul>
<li>标签:链表</li>
<li>将两个链表看成是相同长度的进行遍历,如果一个链表较短则在前面补 $0$,比如 <code>987 + 23 = 987 + 023 = 1010</code>\n- 每一位计算的同时需要考虑上一位的进位问题,而当前位计算结束后同样需要更新进位值</li>
<li>如果两个链表全部遍历完毕后,进位值为 $1$,则在新链表最前方添加节点 $1$\n- 小技巧:对于链表问题,返回结果为头结点时,通常需要先初始化一个预先指针 pre,该指针的下一个节点指向真正的头结点 head。<strong>使用预先指针的目的在于链表初始化时无可用节点值,而且链表构造过程需要指针移动,进而会导致头指针丢失,无法返回结果。</strong>\n</li>
</ul>
<h3>代码</h3>
<pre><code class="language-Java"> carry = sum / 10;\n sum = sum % 10;\n cur.next = new ListNode(sum);\n
cur = cur.next;\n if(l1 != null)\n l1 = l1.next;\n if(l2 != null)\n l2 = l2.next;\n }\n if(carry == 1) {\n cur.next = new ListNode(carry);\n }\n return pre.next;\n }\n}\n```\n
### 画解
<,,,,,,,,>\n\n想看大鹏画解更多高频面试题,欢迎阅读大鹏的 LeetBook:[《画解剑指 Offer 》](https://leetcode-cn.com/leetbook/detail/illustrate-lcof/),O(∩_∩)O
</code></pre>