題目:
給出兩個 非空 的鍊錶用來表示兩個非負的整數。其中,它們各自的位數是按照 逆序 的方式儲存的,並且它們的每個節點只能儲存 一位 數字。如果,我們將這兩個數相加起來,則會返回乙個新的鍊錶來表示它們的和。您可以假設除了數字 0 之外,這兩個數都不會以 0 開頭。
示例:輸入:(2 -> 4 -> 3) + (5 -> 6 -> 4)
輸出:7 -> 0 -> 8
原因:342 + 465 = 807
思路:本題使用棧來解決,先將兩陣列數字輸入棧,此時注意棧大小要相等,不相等則加0。再講兩棧對應元素相加,將和輸入新的棧,此時順序即為反序,但此時有元素大於10,還需進行進製操作。建立乙個陣列儲存進製後的元素,再返回最終鍊錶。
/**
* definition for singly-linked list.
* public class listnode
* }*/class
solution
//l2入棧
while
(l2!=null)
//比較兩棧大小,往少的那個新增0
while
(stack1.
size()
!=stack2.
size()
)//將兩棧對應數相加,再入新棧
while
(!stack1.
isempty()
)//建立陣列,存放所有位數上的數字,建立進製carry
arraylist
arr =
newarraylist
<
>()
;int carry=0;
while
(!stack3.
isempty()
||carry!=0)
arr.
add(current);}
listnode l3 =
newlistnode
(arr.
get(0)
);listnode l4 = l3;
if(arr.
size()
==1)return l3;
else
}return l4;}}
}
LeetCode 兩數相加
題目來自leetcode 注意幾點 鍊錶對應結點相加時增加前乙個結點的進製,並儲存下乙個結點的進製 兩個鍊錶長度不一致時,要處理較長鍊錶剩餘的高位和進製計算的值 如果最高位計算時還產生進製,則還需要新增乙個額外結點。definition for singly linked list.struct l...
leetcode 兩數相加
給定兩個非空鍊錶來表示兩個非負整數。位數按照逆序方式儲存,它們的每個節點只儲存單個數字。將兩數相加返回乙個新的鍊錶。你可以假設除了數字 0 之外,這兩個數字都不會以零開頭.示例 輸入 2 4 3 5 6 4 輸出 7 0 8 原因 342 465 807 definition for singly ...
leetcode 兩數相加
給定兩個非空鍊錶來表示兩個非負整數。位數按照逆序方式儲存,它們的每個節點只儲存單個數字。將兩數相加返回乙個新的鍊錶。你可以假設除了數字 0 之外,這兩個數字都不會以零開頭。示例 輸入 2 4 3 5 6 4 輸出 7 0 8原因 342 465 807 definition for singly l...