尋找公共鍊錶起始位置

2021-10-22 15:20:29 字數 492 閱讀 3849

題目:存在這樣一種情況,如果兩個單詞有相同的字尾,那我們可以將字尾作為公共部分儲存,比如being和loading,其中ing就可以作為

公共部分,現在存在兩個鍊錶,含有公共部分,設計乙個高效演算法找到其公共字尾其實位置。

分析:我們可以這樣想,如果我們單純的讓兩條鍊錶的指標同步移動,那麼只有兩條鍊錶長度相同時才可能在公共部分的起始位置相遇,

所以我們應該讓他們處於同一起跑線上,故而我們應該讓較長的鍊錶先走,具體走多少,應該是走過兩條鍊錶的長度之差。

**:

struct link ;

link *next;

};#include #include link *findcommonsuffix(link *h1,link *h2)

while (q)

if (countq>countp)

else {

p = h1->next;

q = h2->next;

單向還鍊錶如何尋找起始節點

給你乙個單向鍊錶,已知裡面有乙個鍊錶環,你如何用程式找出環的起始位置?這是我在網上看到的問題,而給出的解決方法也頗為巧妙,大意就是 弄兩個指標,快指標和慢指標,快指標速度是慢指標的兩倍。它倆一起從煉表頭出發,不難想象,經歷一段過程之後,它倆一定會在鍊錶中的某一點相遇。然後把其中乙個指標送回煉表頭節點...

(2)尋找鍊錶中環的位置

演算法 1 中,我們已經知道如何判斷乙個鍊錶中是否有環了,那麼怎麼找到環的位置呢?英文命題 given alinked list,return thenode where thecycle begins if there is no cycle,return null.follow up can y...

鍊錶 尋找2個鍊錶的第乙個公共節點

輸入兩個鍊錶,找出它們的第乙個公共結點。思路 由於從某個節點開始2個鍊錶相交,那麼之後的節點完全一樣 先求出2個連表長度 先使得長的鍊錶 先走差值的長度 然後2個指標併排前進,並判斷是否相等,若相等即為第乙個公共節點 需要注意 null的情況 class solution else 在2個指標併排前...