題目:
假設鍊錶中每乙個節點的值都在 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...