兩數相加 LeetCode

2021-10-07 13:30:39 字數 1132 閱讀 6353

題目:

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