# Leetcode 筆記 :(2) Add Two Numbers[mediu] ###### tags: `Leetcode` ## 題目 You are given two non-empty linked lists representing two non-negative integers. The digits are stored in reverse order, and each of their nodes contains a single digit. Add the two numbers and return the sum as a linked list.You may assume the two numbers do not contain any leading zero, except the number 0 itself. Example ``` Input: l1 = [2,4,3], l2 = [5,6,4] Output: [7,0,8] Explanation: 342 + 465 = 807 ``` Example ``` Input: l1 = [0], l2 = [0] Output: [0] ``` Example ``` Input: l1 = [9,9,9,9,9,9,9], l2 = [9,9,9,9] Output: [8,9,9,9,0,0,0,1] ``` ## 解題思路 ### Linked-list 下面節錄至wiki >***Singly linked list*** >>Singly linked lists contain nodes which have a data field as well as 'next' field, which points to the next node in line of nodes. Operations that can be performed on singly linked lists include insertion, deletion and traversal. 簡單的說就是每個**node**裡面會包含兩個field, 一個是當前**node**的值,另外是指向下一個**node**的指標,最後一個節點則指向一個空值(null or None)。 ## LeetCode Solution 然後參考 leetCode 上面解答,如下圖 ![](https://i.imgur.com/K51UknY.png) ## 開始解答 ```python class Solution: def addTwoNumbers(self, l1: ListNode, l2: ListNode) -> ListNode: result = ListNode(0) node = result tmp = 0 while l1 != None or l2 != None or tmp >0: if l1 is not None: tmp += l1.val l1 = l1.next if l2 is not None: tmp +=l2.val l2 = l2.next node.next = ListNode(tmp%10) # 取mod10 node = node.next tmp = tmp//10 return result.next ``` ## Reference wiki https://zh.wikipedia.org/wiki/%E9%93%BE%E8%A1%A8 Linked List: Intro https://medium.com/@havbgbg68/leetcode-2-add-to-numbers-python-63e4d5ba1534