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

2021-10-05 04:52:26 字數 613 閱讀 7679

題目描述

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

分析

根據《劍指offer》上的分析,記得要查詢乙個鍊錶是否有環,設定兩個快慢指標,快指標一次走兩步,慢指標一次走一步。如果鍊錶有環,這兩個指標必定會相遇。於是,解決這道題的第一步,先要判斷鍊錶是否有環;若有環,接下來需要找環的入口結點。同樣是兩個指標,乙個指標還在原來快慢指標相遇的地方開始遍歷,另乙個指標從頭結點開始遍歷,兩個指標相遇的地方就是環入口節點。

時間複雜度

o(n)

**

public

class

solution}if

( ifc ==0)

return null;

//乙個指標從相遇點開始走,乙個指標從頭結點開始走,直到相等

slow = phead;

while

( slow!=quick )

return quick;

}}

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

題目 給乙個鍊錶,若其中包含環,請找出該鍊錶的環的入口結點,否則,輸出null。struct listnode 解析 當然這個可以使用快慢指標來做,不過,快慢指標這個方法真的是涉及到數學的問題,而我,最煩數學!我想到乙個通過map來做的方法,先建立乙個map listnode int hash ma...

鍊錶中環的入口結點

乙個鍊錶中包含環,請找出該鍊錶的環的入口結點。class listnode public class solution return p1 return null 分析 假設鍊錶的起始點到環的入口點節點數為k,環的的節點數為x,讓p2的速度是p1的兩倍,p1和p2相遇在環的第y各節點,可以得到如下等...

鍊錶中環的入口結點

題目要求 乙個鍊錶中包含環,請找出該鍊錶的環的入口結點 分析 1 一種比較偷懶的方法就是遍歷鍊錶,並直接利用hashmap來儲存已經遍歷過的結點。一旦發現已經儲存過的結點,那麼該結點就是環的入口結點。2 參考自 我簡單畫了乙個圖 上傳之後一直是橫過來的。不知道為什麼轉不正 設定兩個指標p1和p2,乙...