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

2021-08-14 01:13:47 字數 956 閱讀 3707

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

思路:首先要明白一點:如果兩個單向鍊錶有公共結點,那麼這兩個鍊錶從某一結點開始,它們的next都指向同乙個結點,及公共結點一定出現在鍊錶的            尾部。

兩種思路:

第一種是將兩個鍊錶的結點放入棧中,我們依次比較棧頂元素,找出公共結點出現的最後乙個元素。

第二種是將直接遍歷兩個鍊錶,得到其長度,長度相減得到鍊錶的移動次數,移動之後再比較是否是公共結點。

**:

/*

public class listnode

}*/public classsolution

intcount1 = 0;

listnode p1 = phead1;

while(p1 !=null)

intcount2 = 0;

listnode p2 = phead2;

while(p2 !=null)

intflag=0;

flag = count1-count2;

if(flag<=0)

while(phead1 != phead2)

returnphead1;

}if(flag>0)

while(phead1 != phead2)

returnphead1;

}return null;

}}

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

package listtest.listintersection 查詢兩個鍊錶的第乙個交點 兩個有交點的鍊錶自交點結點開始到最後乙個結點都是相同的。如果能從最後乙個結點遍歷到最後乙個相同的結點則為交點。但是單鏈表只能從頭結點開始遍歷,所以我們要考慮兩個鍊錶的長度是不是一樣的。如果乙個鍊錶比另外乙個...

劍指offer 合併兩個鍊錶

輸入兩個單調遞增的鍊錶,輸出兩個鍊錶合成後的鍊錶,當然我們需要合成後的鍊錶滿足單調不減規則。新建乙個節點作為head,依次遍歷兩個陣列 時間複雜度 o n 空間複雜度 o 1 coding utf 8 class listnode def init self,x self.val x self.ne...

劍指offer 兩個鍊錶的合併

我怕是要丸,鍊錶合併不會寫了!題目 輸入兩個單調遞增的鍊錶,輸出兩個鍊錶合成後的鍊錶,合成後的鍊錶滿足單調遞增。首先遞迴方法 struct listnode listnode reverselist listnode phead first next last return first 非遞迴 ty...