1.題目描述:
給你兩個非空的鍊錶,表示兩個非負的整數。它們每位數字都是按照 逆序 的方式儲存的,並且每個節點只能儲存 一位 數字。請你將兩個數相加,並以相同形式返回乙個表示和的鍊錶。
你可以假設除了數字 0 之外,這兩個數都不會以 0 開頭。
2.示例
輸入:l1 = [2,4,3], l2 = [5,6,4]輸出:[7,0,8]
解釋:342 + 465 = 807
3.解析
(1)此題難度不大,記錄此題是想記錄乙個思路。在計算兩數之和時,由於加法進製僅可能使得兩個加數中最長的加數進製。所以使用鍊錶表示加法時,逆序排列加數,可以有很好的擴充套件性,無需進行移動。
由此可想,在一些單方向擴充套件的資料結構中使用鍊錶,可以避免移動資料。
(2)另外此題,編寫後總結如下問題:
<1>十進位制加法中,兩數之和的進製值最大為1:先考慮低位可能產生的最大進製值情況:9+9=18,最大進製值是1.在其高一位上,可能產生的最大進製且本位最高的仍為:9+9=18.由於8+1<10,故不會產生進製。從而得出結論。
<2>另外注意,進製至位數超過兩加數的最大位數時,對最高位的處理。
4.最後給出**
/** * definition for singly-linked list.
* struct listnode
* listnode(int x) : val(x), next(nullptr) {}
* listnode(int x, listnode *next) : val(x), next(next) {}
* }; */
class
solution
if(l1!=nullptr&&l2!=nullptr)
else
if(l1!=nullptr)
else
if(l2!=nullptr)
else
if(currentbitvalue>=10
)else
struct listnode* currentnode = new
struct
listnode(currentbitvalue);
if(lastnode==nullptr)
else
lastnode =currentnode;
}return
head;}};
Leecode 2 兩數相加
給出兩個 非空 的鍊錶用來表示兩個非負的整數。其中,它們各自的位數是按照 逆序 的方式儲存的,並且它們的每個節點只能儲存 一位 數字。如果,我們將這兩個數相加起來,則會返回乙個新的鍊錶來表示它們的和。您可以假設除了數字 0 之外,這兩個數都不會以 0 開頭。示例 輸入 2 4 3 5 6 4 輸出 ...
leecode 2 兩數相加
給出兩個 非空 的鍊錶用來表示兩個非負的整數。其中,它們各自的位數是按照 逆序 的方式儲存的,並且它們的每個節點只能儲存 一位 數字。如果,我們將這兩個數相加起來,則會返回乙個新的鍊錶來表示它們的和。您可以假設除了數字 0 之外,這兩個數都不會以 0 開頭。示例 輸入 2 4 3 5 6 4 輸出 ...
兩數相加leecode
兩數相加 給出兩個 非空 的鍊錶用來表示兩個非負的整數。其中,它們各自的位數是按照 逆序 的方式儲存的,並且它們的每個節點只能儲存 一位 數字。如果,我們將這兩個數相加起來,則會返回乙個新的鍊錶來表示它們的和。您可以假設除了數字 0 之外,這兩個數都不會以 0 開頭。輸入 2 4 3 5 6 4 輸...