假設鍊錶中每乙個節點的值都在 0 - 9 之間,那麼鍊錶整體就可以代表乙個整數。
給定兩個這種鍊錶,請生成代表兩個整數相加值的結果鍊錶。
例如:鍊錶 1 為 9->3->7,鍊錶 2 為 6->3,最後生成新的結果鍊錶為 1->0->0->0。
示例1
[9,3,7],[6,3]
//方法二:使用棧,不需要反轉鍊錶
public listnode addinlistii(listnode head1, listnode head2)
while (p2 != null)
int carry = 0;
listnode dummy = new listnode(-1);
while (!s1.empty() || !s2.empty() || carry != 0)
if (!s2.empty())
listnode cur = new listnode(sum % 10);
cur.next = dummy.next;
dummy.next = cur;
carry = sum / 10;
}return dummy.next;
}//方法一:先反轉兩鍊錶
//定義虛擬節點dummy和prev,prev指向dummy
//定義進製carry,迴圈遍歷兩鍊錶,將兩鍊錶的值相加,並將prev指標指向相加的值
//最後將相加後鍊錶再反轉即可
//時間複雜度o(max(m,n)),其中m,n為兩鍊錶的長度
//空間複雜度o(max(m,n))
public listnode addinlisti(listnode head1, listnode head2)
if (l2 != null)
prev.next = new listnode(sum % 10);
prev = prev.next;
carry = sum / 10;
}return reverse(dummy.next);
}private listnode reverse(listnode head)
return node;
}
兩個鍊錶生成相加鍊錶
假設鍊錶中每乙個節點的值都在 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。public listnode addinlist listnod...
刷題 兩個鍊錶生成相加鍊錶
兩個鍊錶,分別表示2個整數,每個鍊錶的節點含有數值0 9 比如9 3 7 和 6 3 相加,得到1 0 0 0 解 將2個鍊錶分別反向,將反向後的鍊錶相加,將得到的鍊錶反向,即可得到解 1 兩個單鏈表生成相加鍊錶 2public static node addlist node head1,node...