2. Add Two Numbers
題目網址:https://leetcode.cn/problems/add-two-numbers/
題意:給兩個非空 linked list 表示兩個非負整數, 每位數字都是按照逆序(e.g. 個位數在前, 十位數在後)儲存的, 且每一個 node 只能存一位數字。請將兩數相加, 並以相同型式返回和的 linked list。
除了數字 0 以外, 其他數字都不會以 0 作為開頭。
Solution:
想法:用 dummy 記住新的 linked list 開頭, tail 用來更新新的 linked list 之尾端。除此之外, 還要考慮進位(carry bit)和以下特殊情況:
兩個整數長度不一(e.g.
123
+4567
)
➔ 當node
為NULL
時, 把node->val
設為0
進位導致輸出比原本最長整數還長(e.g.
1
+99
=100
)
➔ loop 終止條件須判斷 carry bit 是否為 0
class Solution { |
- time:$O(max(m,n))$ ➔ while loop 終止是取決最長的 linked list 長度
- space:$O(max(m,n))$ ➔ 新的 linked list 長度取決於最長的 linked list 長度
本部落格所有文章除特別聲明外,均採用 CC BY-NC-SA 4.0 許可協議。轉載請註明來自 Zako's Blog!
評論