力扣 2 兩數相加 中等

2021-10-24 01:59:33 字數 1016 閱讀 7268

描述:

給出兩個 非空 的鍊錶用來表示兩個非負的整數。其中,它們各自的位數是按照 逆序 的方式儲存的,並且它們的每個節點只能儲存 一位 數字。

如果,我們將這兩個數相加起來,則會返回乙個新的鍊錶來表示它們的和。

您可以假設除了數字 0 之外,這兩個數都不會以 0 開頭。

示例:

輸入:(2 -> 4 -> 3)+ ( 5 -> 6 -> 4)

輸出:7 -> 0 ->8

原因:342 + 465 = 807

我的解決方案:

class solution 

if(l2==null)

listnode res = new listnode(0);

listnode res1 = res;

int carry = 0;

while(l1!=null&&l2!=null)

while(l1!=null)

while(l2!=null)

if(carry!=0)

return res1.next;

}}

思路解析:

這裡就不寫較優的解決方案了,其實感覺沒有差很多,就簡單記錄一下自己的思路。

1.首先特殊情況判斷,當某個鍊錶為null時,直接返回另乙個鍊錶即可;

2.當兩個鍊錶都不為空,則進行對應遍歷。建立乙個新的鍊錶和鍊錶引用,儲存結果鍊錶。從兩個鍊錶的表頭開始進行加和操作,使用 % 取的個位的數字,使用 / 取的進製位,使用個位數字建立新的節點,兩個資料鏈表和結果鍊錶指標後移,當某個鍊錶為空時停止迴圈;

3.兩個鍊錶分別進行判斷,是否為空,如果不為空,則對單鏈表進行遍歷,同樣使用鍊錶元素的資料和進製位進行加和操作,使用 % 和 / 獲得資料,和第二步進行類似操作,直到鍊錶為空;

4.對進製位進行判斷,是否不為0,如果不為零則新建乙個節點儲存;

5.根據引用返回結果鍊錶。

力扣 2 兩數相加

給出兩個 非空 的鍊錶用來表示兩個非負的整數。其中,它們各自的位數是按照 逆序 的方式儲存的,並且它們的每個節點只能儲存 一位 數字。如果,我們將這兩個數相加起來,則會返回乙個新的鍊錶來表示它們的和。您可以假設除了數字 0 之外,這兩個數都不會以 0 開頭。將兩個鍊錶補成長度一致的,短的在後邊補零。...

力扣2 兩數相加

2.兩數相加 難度 中等 描述 給你兩個 非空 的鍊錶,表示兩個非負的整數。它們每位數字都是按照 逆序 的方式儲存的,並且每個節點只能儲存 一位 數字。請你將兩個數相加,並以相同形式返回乙個表示和的鍊錶。你可以假設除了數字 0 之外,這兩個數都不會以 0 開頭。示例 1 輸入 l1 2,4,3 l2...

力扣兩數相加

描述 給出兩個 非空 的鍊錶用來表示兩個非負的整數。其中,它們各自的位數是按照 逆序 的方式儲存的,並且它們的每個節點只能儲存 一位 數字。如果,我們將這兩個數相加起來,則會返回乙個新的鍊錶來表示它們的和。示例 輸入 2 4 3 5 6 4 輸出 7 0 8 definition for singl...