題目
給你兩個 非空 鍊錶來代表兩個非負整數。數字最高位位於鍊錶開始位置。它們的每個節點只儲存一位數字。將這兩數相加會返回乙個新的鍊錶
輸入:(7 -> 2 -> 4 -> 3) + (5 -> 6 -> 4)
輸出:7 -> 8 -> 0 -> 7
難點
本題的主要難點在於鍊錶中數字的順序與我們做加法的順序是相反的,為了逆序處理所有數字,我們可以使用棧:把所有數字壓入棧中,再依次取出相加。
最後使用頭插法記錄每一位的val,返回此鍊錶
頭插法的主要步驟:
給要插入的節點賦值
listnode curnode = new listnode(cur);
將要插入的節點的指標域指向 即將要插入的鍊錶的頭節點(ans)
curnode.next = ans;
更新頭節點,插入之後的頭節點為新插入的這個節點
ans = curnode;
**/**
* definition for singly-linked list.
* public class listnode
* }*/class
solution
while
(l2 != null)
int carry =0;
//listnode dummy = new listnode(0);
listnode ans = null;
= ans;
while
(!stack1.
isempty()
||!stack2.
isempty()
|| carry >0)
return ans;
}}
力扣 445 兩數相加 II 鍊錶 棧
思路 加法自然要從最低位開始搞,那麼可以先把給定的鍊錶翻轉一下再處理,但是這樣做太麻煩了。用棧就可以了,注意進製問題。definition for singly linked list.struct listnode class solution while l2 listnode cur,nxt ...
leetcode 鍊錶 445 兩數相加 II
給定兩個非空鍊錶來代表兩個非負整數。數字最高位位於鍊錶開始位置。它們的每個節點只儲存單個數字。將這兩數相加會返回乙個新的鍊錶。你可以假設除了數字 0 之外,這兩個數字都不會以零開頭。高階 如果輸入鍊錶不能修改該如何處理?換句話說,你不能對列表中的節點進行翻轉。示例 輸入 7 2 4 3 5 6 4 ...
leetcode 445 兩數相加II(鍊錶)
給定兩個非空鍊錶來代表兩個非負整數。數字最高位位於鍊錶開始位置。它們的每個節點只儲存單個數字。將這兩數相加會返回乙個新的鍊錶。你可以假設除了數字 0 之外,這兩個數字都不會以零開頭。高階 如果輸入鍊錶不能修改該如何處理?換句話說,你不能對列表中的節點進行翻轉。示例 輸入 7 2 4 3 5 6 4 ...