---
description: LeetCode 2
---

# Add Two Sum

```python
class Solution:
    def addTwoNumbers(self, l1, l2):
        """
        :type l1: ListNode
        :type l2: ListNode
        :rtype: ListNode
        """
        # 給個新LinkList去儲存新元素
        # tmp 變數是因為變換中須給指標指新位子
        root = tmp = ListNode(0)
        carry = 0 
        
        while l1 or l2 or carry:
            # v1 = v2 = 0 是預防1. 其中一個List 空了 2. 最後只有carry時的處理
            v1 = v2 = 0
            if l1:
                v1 = l1.val
                l1 = l1.next
            if l2:
                v2 = l2.val
                l2 = l2.next
            
            carry, reminder = divmod(carry + v1 + v2, 10) 
            node = ListNode(reminder)
            tmp.next = node
            tmp = node
        
        return root.next
```
