如何判斷兩個鍊錶相交及找到第乙個相交點

2021-09-25 17:34:26 字數 383 閱讀 3272

1.暴力解法。 

從頭開始遍歷第乙個鍊錶,遍歷第乙個鍊錶的每個節點時,同時從頭到尾遍歷第二個鍊錶,看是否有相同的節點,第一次找到相同的節點即第乙個交點。若第乙個鍊錶遍歷結束後,還未找到相同的節點,即不存在交點。時間複雜度為o(n^2)。這種方法顯然不是寫這篇部落格的重點。。。不多說了。

2.使用棧。 

我們可以從頭遍歷兩個鍊錶。建立兩個棧,第乙個棧儲存第乙個鍊錶的節點,第二個棧儲存第二個鍊錶的節點。每遍歷到乙個節點時,就將該節點入棧。兩個鍊錶都入棧結束後。則通過top判斷棧頂的節點是否相等即可判斷兩個單鏈表是否相交。因為我們知道,若兩個鍊錶相交,則從第乙個相交節點開始,後面的節點都相交。 

若兩鍊錶相交,則迴圈出棧,直到遇到兩個出棧的節點不相同,則這個節點的後乙個節點就是第乙個相交的節點。

如何判斷兩個鍊錶相交及找到第乙個相交點

我們學乙個演算法,一定是為了用吧,所謂 學以致用 嗎?那麼判斷兩個鍊錶是否相交有什麼用呢?這是因為一旦兩個鍊錶出現相交的情況,就可能發生這樣的情況,程式釋放了鍊錶la的所有節點,這樣就導致了另外乙個與之有相交節點的鍊錶lb中的節點也釋放了,而lb的使用者,可能並不知道事實的真相,這會帶來很大的麻煩。...

如何判斷兩個鍊錶相交及找到第乙個相交點

我們學乙個演算法,一定是為了用吧,所謂 學以致用 嗎?那麼判斷兩個鍊錶是否相交有什麼用呢?這是因為一旦兩個鍊錶出現相交的情況,就可能發生這樣的情況,程式釋放了鍊錶la的所有節點,這樣就導致了另外乙個與之有相交節點的鍊錶lb中的節點也釋放了,而lb的使用者,可能並不知道事實的真相,這會帶來很大的麻煩。...

如何判斷兩個鍊錶相交及找到第乙個相交點

如何判斷兩個鍊錶相交及找到第乙個相交點 1.問題分析 看看兩個鍊錶相交到底是怎麼回事吧,有這樣的的幾個事實 假設鍊錶中不存在環 1 一旦兩個鍊錶相交,那麼兩個鍊錶中的節點一定有相同位址。2 一旦兩個鍊錶相交,那麼兩個鍊錶從相交節點開始到尾節點一定都是相同的節點。分析出來了問題的本質,那麼思路也就自然...