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

2021-10-08 09:41:48 字數 426 閱讀 1488

設 a 的長度為 a + c,b 的長度為 b + c,其中 c 為尾部公共部分長度,可知 a + c + b = b + c + a。

當訪問鍊錶 a 的指標訪問到鍊錶尾部時,令它從鍊錶 b 的頭部重新開始訪問鍊錶 b;同樣地,當訪問鍊錶 b 的指標訪問到鍊錶尾部時,令它從鍊錶 a 的頭部重新開始訪問鍊錶 a。這樣就能控制訪問 a 和 b 兩個鍊錶的指標能同時訪問到交點。

public listnode findfirstcommonnode

(listnode phead1, listnode phead2)

return l1;

}

劍指 52 兩個鍊錶的第乙個公共結點

題目描述 演算法分析 提交 class solution while pnode2 pnode1指向較長鍊錶,pnode2指向較短的鍊錶 pnode1 len1 len2 phead1 phead2 pnode2 len1 len2 phead1 phead2 長表先行 for int i 0 i ...

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

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

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

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