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

2021-07-15 16:49:52 字數 700 閱讀 3022

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

由於是單鏈表,所以可以發現從第乙個公共節點開始,後面的結點都是相同的,一種思路是從兩個鍊錶的尾部開始遍歷,直到發現最後乙個相同的結點為止,那麼這最後乙個相同的結點是單鏈表的角度看就是兩個鍊錶的第乙個公共節點了。還有一種思路是不需要從尾部開始遍歷,畢竟從尾部遍歷單鏈表的話還得使用反轉鍊錶的方法進行操作,首先計算出兩個鍊錶的長度,讓更長的那個單鏈表先移動兩個鍊錶長度差值個位置,然後兩個鍊錶同時移動,從更短的那個鍊錶的第乙個位置開始遍歷,兩個鍊錶都往後移動,當發現第乙個相同的結點的值的時候,那麼該節點就是第乙個公共節點了。

/*

public class listnode

}*/public

class solution

temp = phead2;

while(temp!=null)

listnode longlist = null;

listnode shortlist = null;

int k = 0; //長鍊表與短鍊錶的差值

if((listlen1-listlen2)>=0)else

for(int i=0;iwhile(shortlist!=null&&(shortlist.val!=longlist.val))

return shortlist;

}}

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

題目描述 輸入兩個鍊錶,找出它們的第乙個公共結點。解題思路 用兩重迴圈,對第乙個鍊錶的每乙個結點都進行第二個鍊錶所有結點的遍歷,若發現結點相等,則將結點返回 public listnode findfirstcommonnode listnode phead1,listnode phead2 phe...

劍指offer 兩個鍊錶的第乙個公共結點(鍊錶)

輸入兩個鍊錶,找出它們的第乙個公共結點。公共節點指的是節點的指標相同 節點本身相同 而不是節點的內容相同。如果考慮暴力的方法,對於鍊錶1的每個元素,去遍歷鍊錶2,找出第乙個公共節點,這樣時間複雜度為o mn 計算開銷大 m,n分別為兩個鍊錶的長度 考慮具有公共節點的鍊錶的特徵 如果兩個鍊錶有公共節點...

劍指offer 兩個鍊錶的第乙個公共節點

題目延伸 程式設計之美中的求兩個節點是否相交 將兩個節點串在一起,若有節點,串在一起的節點就會出現環,利用一二不長不等,兩個節點在環中必然相遇。本題描述 輸入兩個鍊錶,找出它們的第乙個公共結點。分析 乙個簡單的方法是 首先遍歷兩個鍊錶得到它們的長度,就能知道哪個鍊錶比較長,以及長的鍊錶比短的鍊錶多幾...