兩個鍊錶的公共結點

2021-06-29 07:14:55 字數 748 閱讀 7527

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

鍊錶結點定義如下:

1

struct

listnode

2

思想:我們可以先遍歷一次得到分別得到兩個鍊錶的長度,然後計算得出長度差n,那麼讓較長的鍊錶先走n步,然後兩個鍊錶一起向後走,直到兩個指標指向同乙個結點。這個結點就是我們要找的 結點。具體**如下:

1

int getlistlength(listnode*phead)29

return

length ;10}

1112 listnode* findfirstcommonnode(listnode* phead1 , listnode*phead2)

1326

for (int i = 0 ; i < lengthdiff ; i++)

2730

31while (plonglisthead != null && pshortlisthead != null && plonglisthead !=pshortlisthead)

3236

37 listnode* pfirstcommonnode =plonglisthead ;

38return

pfirstcommonnode;

39 }

兩個鍊錶的公共結點

題目描述 輸入兩個鍊錶,找出它們的第乙個公共結點 思路 如上圖所示,兩個鍊錶從第乙個公共結點開始,後面的所有結點都是重合的,並且不可能再出現分叉 思路一 在第乙個鍊錶上順序遍歷每個結點,每遍歷乙個結點,就在第二個鍊錶上順序遍歷每個結點,直到找到第乙個公共結點。時間複雜度為o mn 思路二 首先計算出...

兩個鍊錶的公共結點

輸入兩個鍊錶,找出它們的第乙個公共結點。注意因為傳入資料是鍊錶,所以錯誤測試資料的提示是用其他方式顯示的,保證傳入資料是正確的 也就是說兩個鍊錶具有公共的部分 第一種方式就是遍歷兩個鍊錶,找出公共的節點,並且時間複雜度為 o n 2 第二種方式,只需要花費o n 的時間複雜度 首先我們需要準備兩個指...

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

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