leecode2 兩數相加

2022-06-21 04:48:08 字數 1318 閱讀 4322

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 輸...