兩個鍊錶生成相加鍊錶 牛客網演算法題

2021-10-10 17:00:35 字數 1156 閱讀 3530

題目:

假設鍊錶中每乙個節點的值都在 0 - 9 之間,那麼鍊錶整體就可以代表乙個整數。

給定兩個這種鍊錶,請生成代表兩個整數相加值的結果鍊錶。

例如:鍊錶 1 為 9->3->7,鍊錶 2 為 6->3,最後生成新的結果鍊錶為 1->0->0->0。

示例1輸入

複製[9,3,7],[6,3]

返回值複製

說下我的思路:

1.相加因為有可能進製,所以是從後向前加,但是鍊錶是單向鍊錶,這時我們會想起棧這個資料結構。

2.把兩個鍊錶的值分別壓入棧中再相加不就是從後向前加了嗎。但是還要考慮進製的問題。

3.我是通過和10比較分別進入兩段邏輯,比10小的直接新增節點就行了,比10大的就要減10,對下乙個數字加1.然後把減過的數生成節點新增到鍊錶。

下面把**貼出來:

public static listnode addinlist (listnode head1, listnode head2)

while(head2 != null)

integer result = 0;

integer s1 = 0;

integer s2 = 0;

listnode n1 = new listnode(0);

listnode head = new listnode(0);

while(!stack1.isempty() || !stack2.isempty())else

if(!stack2.isempty())else

result = s1 + s2;

listnode temp = new listnode(0);

if(result < 10)elseelse

stack1.push(sta);

temp.val = res;

temp.next = n1;

if(head == null)

n1 = temp;}}

listnode frist = n1;

while (frist.next.next != null)

frist.next = null;

return n1;

}總結:

這次用的棧做的,其實也可以用其他資料結構,在做這樣型別的演算法題時,多考慮用資料結構的思路就會很容易做出來。

演算法 兩個鍊錶生成相加鍊錶

題目描述 假設鍊錶中每乙個節點的值都在 0 9 之間,那麼鍊錶整體就可以代表乙個整數。給定兩個這種鍊錶,請生成代表兩個整數相加值的結果鍊錶。例如 鍊錶 1 為 9 3 7,鍊錶 2 為 6 3,最後生成新的結果鍊錶為 1 0 0 0。public listnode addinlist listnod...

兩個鍊錶生成相加鍊錶

假設鍊錶中每乙個節點的值都在 0 9 之間,那麼鍊錶整體就可以代表乙個整數。給定兩個這種鍊錶,請生成代表兩個整數相加值的結果鍊錶。例如 鍊錶 1 為 9 3 7,鍊錶 2 為 6 3,最後生成新的結果鍊錶為 1 0 0 0。示例1 9,3,7 6,3 struct listnode class so...

兩個鍊錶生成相加鍊錶

假設鍊錶中每乙個節點的值都在 0 9 之間,那麼鍊錶整體就可以代表乙個整數。給定兩個這種鍊錶,請生成代表兩個整數相加值的結果鍊錶。例如 鍊錶 1 為 9 3 7,鍊錶 2 為 6 3,最後生成新的結果鍊錶為 1 0 0 0。示例1 9,3,7 6,3 方法二 使用棧,不需要反轉鍊錶 public l...