1.錯誤解法
idea: 先遍歷兩個鍊錶,計算出兩個數的數值(十進位制),後將兩數相加,再將 和 的各位轉換為鍊錶的各個節點值。
個人覺得想法是完全沒錯的,但是要知道計算機一次所能儲存的數字位數有限,有的樣例就過不去(儘管我使用了long long型別)。比如:
//求和->轉換->加入單鏈表
28long sum = value1+value2;
29 listnode* ans, *p, *temp;
30 ans = new listnode(sum%10
);31 p =ans;
32 sum /= 10;33
while
(sum)
3441
return
ans;42}
43 };
錯誤解法(先遍歷求和再轉換)
2.正解
idea:(參考了官方題解)遍歷兩個鍊錶(p, q),節點不為空取值,為空則取0,需要另外加入乙個進製量(carry)來表示進製,將兩個鍊錶值與進製值相加,和取餘建立新節點(更新carry=sum/10),最後處理一下最後可能的進製(再新建乙個節點)。
1正解c++class
solution
20if(q !=null)
2124}25
if(carry > 0)//
處理最後的進製
2629
return head->next;30}
31 };
LeetCode2 兩數相加
嗯。今天兩個簡單題,我可能要墮落了 先貼第乙個 給定兩個非空鍊錶來表示兩個非負整數。位數按照逆序方式儲存,它們的每個節點只儲存單個數字。將兩數相加返回乙個新的鍊錶。你可以假設除了數字 0 之外,這兩個數字都不會以零開頭。示例 輸入 2 4 3 5 6 4 輸出 7 0 8原因 342 465 807...
LeetCode 2 兩數相加
題目 給定兩個非空鍊錶來表示兩個非負整數。位數按照逆序方式儲存,它們的每個節點只儲存單個數字。將兩數相加返回乙個新的鍊錶。你可以假設除了數字 0 之外,這兩個數字都不會以零開頭。示例 輸入 2 4 3 5 6 4 輸出 7 0 8 原因 342 465 807 解題 這題就比較簡單了,兩數相加處理好...
LeetCode 2 兩數相加
題目描述 給定兩個非空鍊錶來表示兩個非負整數。位數按照逆序方式儲存,它們的每個節點只儲存單個數字。將兩數相加返回乙個新的鍊錶。你可以假設除了數字 0 之外,這兩個數字都不會以零開頭。題目思路 先從最低有效位也就是列表 l1 和 l2 的表頭開始相加。由於每位數字都應當處於 0 9 的範圍內,我們計算...