描述:
給出兩個 非空 的鍊錶用來表示兩個非負的整數。其中,它們各自的位數是按照 逆序 的方式儲存的,並且它們的每個節點只能儲存 一位 數字。
如果,我們將這兩個數相加起來,則會返回乙個新的鍊錶來表示它們的和。
您可以假設除了數字 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...