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

2022-05-17 11:07:37 字數 804 閱讀 7841

輸入兩個鍊錶,找出它們的第乙個公共結點。(注意因為傳入資料是鍊錶,所以錯誤測試資料的提示是用其他方式顯示的,保證傳入資料是正確的)

思路1:

先統計兩個鍊錶長度,求出相差的步數len3;

讓長的先走len3步,然後兩個一塊走,當兩個指標相等時就是公共節點了

//

先統計兩個鍊錶長度,找出長度之差,讓長的先走(長度之差步),然後一塊走,節點相同就是要找的

//時間複雜度o(m+n), 空間複雜度o(1)

class

solution

while

(p2)

int len3 = (len1 > len2) ? len1-len2 : len2-len1;

//長的先走 len3步

if(len1 >len2)

} else

if(len1

//兩個一塊走

while(phead1 &&phead2 )}};

思路2:

這個操作有點高,牛客討論區看的

class

solution

return

p1; }

};

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

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

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

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

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

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