鍊錶中環的入口結點

2021-10-07 12:50:58 字數 668 閱讀 6120

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

**1: 用map標記

/*

struct listnode

};*/

class solution

return slow;}};

**2:

用快慢指標,慢指標每次走一步,快指標每次走兩步,快指標與慢指標第一次相遇的的位置慢指標走了t步,快指標走了2t步,如果不相遇則沒有環。

t=x+a,  2t=x+a+kc (c為環的結點數,k=1,2,3....)

可得到  2x+2a=x+a+kc,  x=kc-a, x=(k-1)c+ c-a

可以得到,當兩個指標相遇時,把乙個指標的指向鍊錶開頭,兩指標都以每次一步的速度走,兩指標再次相遇時就是環的入口結點。

鍊錶中環的入口結點

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

鍊錶中環的入口結點

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

鍊錶中環的入口結點

題目描述 乙個鍊錶中包含環,請找出該鍊錶的環的入口結點。思路1 設環中結點數是n,環的入口位置是x 距離起點走多少步 用快慢指標p,q,q移動的速度是p的2倍,當兩個指標相遇時p走的步數是y,q走的步數是2y,q比p多走k個環的距離,即 2y y kn,則y kn。p距離環的入口點的距離為y x,此...