### 思路

- 标签:链表
- 将两个链表看成是相同长度的进行遍历,如果一个链表较短则在前面补 $0$,比如 `987 + 23 = 987 + 023 = 1010`\n- 每一位计算的同时需要考虑上一位的进位问题,而当前位计算结束后同样需要更新进位值
- 如果两个链表全部遍历完毕后,进位值为 $1$,则在新链表最前方添加节点 $1$\n- 小技巧:对于链表问题,返回结果为头结点时,通常需要先初始化一个预先指针 pre,该指针的下一个节点指向真正的头结点 head。**使用预先指针的目的在于链表初始化时无可用节点值,而且链表构造过程需要指针移动,进而会导致头指针丢失,无法返回结果。**\n

### 代码

```Java []\n/**\n * Definition for singly-linked list.\n * public class ListNode {\n *     int val;\n *     ListNode next;\n *     ListNode(int x) { val = x; }\n * }\n */\nclass Solution {\n    public ListNode addTwoNumbers(ListNode l1, ListNode l2) {\n        ListNode pre = new ListNode(0);\n        ListNode cur = pre;\n        int carry = 0;\n        while(l1 != null || l2 != null) {\n            int x = l1 == null ? 0 : l1.val;\n            int y = l2 == null ? 0 : l2.val;\n            int sum = x + y + carry;\n
            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
### 画解

<![fr&lt;x&gt;ame_00001.png](https://pic.leetcode-cn.com/2519bd7f7da0f3bd51dd0f06e6363f4f62bfb25472c5ec233cf969e5c1472e33-file_1559748028103),![fr&lt;x&gt;ame_00002.png](https://pic.leetcode-cn.com/400f2a615319c4f0f42c39eb8b8902984922d1e778ca461569ff64460eaa9757-file_1559748028117),![fr&lt;x&gt;ame_00003.png](https://pic.leetcode-cn.com/e0d3266ec83cee00c6a0ff0a8a66de8d129798b24b76a19b7883f2fd1d79c15b-file_1559748087173),![fr&lt;x&gt;ame_00004.png](https://pic.leetcode-cn.com/a5bf6bc2cc15d162bd35eb8fc467fb36887e40b36c26bdc982a11a686b34cb30-file_1559748028113),![fr&lt;x&gt;ame_00005.png](https://pic.leetcode-cn.com/fc6475aca0ec0621003f4888a59086c398ff5fc6ee2e27cbfb9bc91f107383b9-file_1559748028094),![fr&lt;x&gt;ame_00006.png](https://pic.leetcode-cn.com/743afc3cb34954e1f3a9b41924d4af5453832d23772a2e46aa4cd52a2b240bdd-file_1559748028108),![fr&lt;x&gt;ame_00007.png](https://pic.leetcode-cn.com/3323b948431675b9f2ff8b0161eee9178298cbb4403cbcd36dc857f14043cf7a-file_1559748028112),![fr&lt;x&gt;ame_00008.png](https://pic.leetcode-cn.com/508d1bb12a372e385c4052d95ca92e06c3a63a805bf12feddd0bb4e7c972f016-file_1559748028116),![fr&lt;x&gt;ame_00009.png](https://pic.leetcode-cn.com/74f8cd826144b29188851ef1dcb7f9cd8b90837a8e2dc22cfbdd56ce724f2b3a-file_1559748028099)>\n\n想看大鹏画解更多高频面试题,欢迎阅读大鹏的 LeetBook:[《画解剑指 Offer 》](https://leetcode-cn.com/leetbook/detail/illustrate-lcof/),O(∩_∩)O