題目
思路:
- 既然 Linked List 是由個位數開始,剛好可以用小學學的加法來從個位數開始相加。所以須設計一個迴圈來執行可重複執行的加法動作,一步步構建答案所需的 linked list,一次建立一個 node,直到完成。
- 迴圈要可重複執行,需要有個指標,在迴圈內對該指標所指的 node 做操作,並在迴圈結束時讓指標指到下一個 node,讓下一次迴圈來操作
- 迴圈內算出的當下位數的答案
digit_sum % 10的 node 為何是指定給curr.next而非curr?- 因為迴圈結束前
curr必須指向下一個 node,也就是curr.next,以下分兩種情況解釋:- 答案放在
curr身上:必須創造一個空的 node 來當curr.next,而假如這次的迴圈已經是最後一次了,此 linked list 的尾巴就會多一個空的 node - 答案放在
curr.next身上:迴圈結束前curr指向curr.next繼續下一次的操作,假如此次已是最後一次迴圈,也不會多出空的 node 在 linked list 末端,只會在開頭多出一個沒用到的 dummy_head 而已,因此最後回傳答案時是回傳dummy_head.next
- 答案放在
- 因為迴圈結束前
Python3 solution
1 | def addTwoNumbers(self, l1: Optional[ListNode], l2: Optional[ListNode]) -> Optional[ListNode]: |