八 求兩個鍊錶的第乙個公共結點

2021-09-20 03:29:20 字數 426 閱讀 8183

輸入兩個鍊錶,找出它們的第乙個公共結點。

一般的思路是找出兩個鍊錶 長度的差值,然後長的先跑完差值,最後和著短的鍊錶一起跑,這樣必然能夠來到第乙個公共結點

但是這裡有個問題,就是不能夠保證這個鍊錶是無環的,如果有環的話,在判斷鍊錶長度差值的時候,因為一直不能得到null,所以會陷入死迴圈。

所以可以先判斷是否有環,這個的判斷可以通過兩種方式,第一種是hashmap或者hashset 的方式,遍歷兩個鍊錶

第二個就是快慢指標,快的一次兩步,慢的一次一步,如果發現空,返回null,如果發現有快慢指標相等的情況(注:必然會相等的,這是結論),則返回這個節點。

這個3可以直接讓乙個節點一直next,如果能夠到下乙個節點就ok

兩個鍊錶的第乙個公共結點

思路 獲取兩個鍊錶的長度,求的長度差n,讓長鍊表先遍歷n次,然後長鍊表和短鍊錶同時遍歷,當長鍊錶和短鍊錶相等時,即為第一公共結點。o m1 m2 public class findfirstcomnode int len1 getnodelength root1 int len2 getnodele...

兩個鍊錶的第乙個公共結點

題目 輸入兩個鍊錶,找出他們的第乙個公共結點。方法1 分別把兩個鍊錶的節點放入兩個棧裡,這樣兩個鍊錶的尾結點就位於兩個棧的棧頂,接下來比較兩個棧頂的結點是否相同。如果相同,則把棧頂彈出接著比較下乙個棧頂,直到找到最後乙個相同的結點。時間和空間複雜度都是o m n 方法2 先遍歷兩個鍊錶得到它們的長度...

兩個鍊錶的第乙個公共結點

輸入兩個鍊錶,找出它們的第乙個公共結點。分析 如果兩個單向鍊錶有公共的結點,那麼這兩個鍊錶從某乙個結點開始,他們的next結點都指向同乙個結點,但由於是單向鍊錶的結點,每個結點都只有乙個next結點,因此從第乙個公共結點開始,之後他們所有結點都是重合的,不可能出現分支。public listnode...