題目如下:
給定兩個非空鍊錶來表示兩個非負整數。位數按照逆序方式儲存,它們的每個節點只儲存單個數字。將兩數相加返回乙個新的鍊錶。
你可以假設除了數字 0 之外,這兩個數字都不會以零開頭。
示例:
輸入:(2 -> 4 -> 3) + (5 -> 6 -> 4)
輸出:7 -> 0 -> 8
原因:342 + 465 = 807
直接能夠想到的就是把鍊錶中的陣列組成乙個整數然後相加,但是對於較長的鍊錶而言,整數範圍是不夠滴(leetcode上最後的例子數字已經超過了64位所能代表的最大整數,浮點數沒有具體計算過),而且時間複雜度,應該是o(2(m+n)),取數一次操作,賦值又一次操作.所以這裡考慮將每乙個節點的值相加,然後賦值給新的鍊錶,時間複雜度為o(max(m,n)),並且不會出現數值過大無法計算的情況.
**如下
func addtwonumbers(l1 *listnode, l2 *listnode) *listnode
p3next := p3
cf := 0
for
v2 := 0
if(p2next != nil)
val := v1 + v2 + cf
if val >= 10 else
if p1next != nil
if p2next != nil
if(p1next != nil || p2next!= nil || cf!=0)
p3next = p3next.next
}}else
}return p3
}
2 兩數相加(LeetCode)(中等)
給出兩個非空的鍊錶用來表示兩個非負的整數。其中,它們各自的位數是按照逆序的方式儲存的,並且它們的每個節點只能儲存一位數字。如果,我們將這兩個數相加起來,則會返回乙個新的鍊錶來表示它們的和。您可以假設除了數字 0 之外,這兩個數都不會以 0 開頭。示例 輸入 2 4 3 5 6 4 輸出 7 0 8原...
leetcode2 兩數相加(中等)
給出兩個 非空 的鍊錶用來表示兩個非負的整數。其中,它們各自的位數是按照 逆序 的方式儲存的,並且它們的每個節點只能儲存 一位 數字。如果,我們將這兩個數相加起來,則會返回乙個新的鍊錶來表示它們的和。您可以假設除了數字 0 之外,這兩個數都不會以 0 開頭。示例 輸入 2 4 3 5 6 4 輸出 ...
LeetCode2 兩數相加 中等
題目介紹 2.兩數相加 給出兩個 非空 的鍊錶用來表示兩個非負的整數。其中,它們各自的位數是按照 逆序 的方式儲存的,並且它們的每個節點只能儲存 一位 數字。如果,我們將這兩個數相加起來,則會返回乙個新的鍊錶來表示它們的和。您可以假設除了數字 0 之外,這兩個數都不會以 0 開頭。示例 輸入 2 4...