Leetcode 2 兩數相加

2021-09-25 08:43:46 字數 1195 閱讀 8275

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

class

solution

20if(q !=null)

2124}25

if(carry > 0)//

處理最後的進製

2629

return head->next;30}

31 };

正解c++

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 的範圍內,我們計算...