兩個鍊錶的公共結點

2021-08-22 04:48:39 字數 702 閱讀 9092

題目描述:

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

思路:

如上圖所示,兩個鍊錶從第乙個公共結點開始,後面的所有結點都是重合的,並且不可能再出現分叉

思路一:在第乙個鍊錶上順序遍歷每個結點,每遍歷乙個結點,就在第二個鍊錶上順序遍歷每個結點,直到找到第乙個公共結點。

時間複雜度為o(mn)

思路二:首先計算出兩個鍊錶的長度length1和length2,然後讓長鍊表先走|length1-length2|絕對值步,然後從兩個鍊錶開始遍歷,比較兩個鍊錶的結點是否相等

時間複雜度為o(m+n)

**實現:(思路二)

struct listnode 

};class

solution

}else

}while (pcur1 != null && pcur2 != null &&pcur1 != pcur2)

return pcur1;

}// 先求出兩個鍊錶的長度

int lengthoflist(listnode* phead)

return

count;}};

兩個鍊錶的公共結點

輸入兩個鍊錶,找出他們的第乙個公共結點。鍊錶結點定義如下 1 struct listnode 2思想 我們可以先遍歷一次得到分別得到兩個鍊錶的長度,然後計算得出長度差n,那麼讓較長的鍊錶先走n步,然後兩個鍊錶一起向後走,直到兩個指標指向同乙個結點。這個結點就是我們要找的 結點。具體 如下 1 int...

兩個鍊錶的公共結點

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

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

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