鍊錶中環的入口節點(快慢指標 or map)

2021-08-26 09:29:21 字數 666 閱讀 5563

【題目】

給乙個鍊錶,若其中包含環,請找出該鍊錶的環的入口結點,否則,輸出null。

/* struct listnode

}; */

【解析】

當然這個可以使用快慢指標來做,不過,快慢指標這個方法真的是涉及到數學的問題,而我,最煩數學!

我想到乙個通過map來做的方法,先建立乙個map< listnode*, int> hash_map(hash_map的key為節點指標,value為對應的計數值)。

對鍊錶進行遍歷操作,在遍歷的過程中對每個節點進行下標 「」 操作(如果某個節點還未在hash_map中,則下標運算子會建立乙個新元素,其key為這個節點指標,其value為零),然後將value進行自增操作,經過下標操作和自增操作之後,這個節點在hash_map中對應的value就變成了1,而那些沒有被下標操作過的節點在首次進行下標操作時對應的value是0。

如果說我們在遍歷節點的過程中 ,發現某個節點對應的value是1,說明之前已經遍歷過,那這個節點肯定就是鍊錶中環的入口節點。

【參考程式】

class solution 

return null;

}};

鍊錶中環的入口結點 快慢指標

題目描述 給乙個鍊錶,若其中包含環,請找出該鍊錶的環的入口結點,否則,輸出null。分析 根據 劍指offer 上的分析,記得要查詢乙個鍊錶是否有環,設定兩個快慢指標,快指標一次走兩步,慢指標一次走一步。如果鍊錶有環,這兩個指標必定會相遇。於是,解決這道題的第一步,先要判斷鍊錶是否有環 若有環,接下...

鍊錶中環的入口節點

乙個鍊錶中包含環,請找出該鍊錶的環的入口結點。思路 通過141題,我們知道可以通過快慢指標來判斷是否有環,現在我們假設兩個指標相遇在z點,如圖 那麼我們可以知道fast指標走過a b c b slow指標走過a b 那麼2 a b a b c b 所以a c 那麼此時讓slow回到起點,fast依然...

鍊錶中環的入口節點

題目描述 乙個鍊錶中包含環,請找出該鍊錶的環的入口結點。演算法描述 受之前的面試題的啟發,如果我們在乙個有環的鍊錶中設定兩個鍊錶指標,乙個快,乙個慢,那麼兩個鍊錶指標相遇的時候,必然是位於鍊錶中的某個結點,利用這個結點,當我們從這個結點開始繼續遍歷,當再一次回到這個結點的時候,我們可以統計出環中的結...