leetcode 鍊錶中環的入口結點

2021-09-26 05:53:35 字數 727 閱讀 2322

題目:

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

/*struct listnode

};*/

思路:

快慢指標,快指標每次前進兩個長度,慢指標每次前進乙個長度,若存在環,則一定會在環內相遇。

假設起點到環入口長度a,環入口到相遇點長度為b,相遇點到環入口長度為c,環長度為r,則有如下關係:

2(a+b) = a+b+nr

a+b = nr

a+r-c = nr

a = c+(n-1)r

所以當存在環時,令兩個指標分別從相遇點和頭出發,相遇點即為環入口

**:

class solution 

listnode * slow = phead;

listnode * fast = phead;

while

(null

!= fast &&

null

!= fast->next)

}return

null;}

listnode*

getentrynodeofloop

(listnode* fast, listnode* phead)

return fast;}}

;

鍊錶中環的入口

題目描述 給乙個鍊錶,若其中包含環,請找出該鍊錶的環的入口結點,否則,輸出null。思路 之前我們判斷鍊錶是否有環,用兩個指標,快慢指標,乙個走一步,乙個走兩步,在此基礎上,當兩個指標相遇,此時肯定在環中,那麼接著計算環的節點數,就利用相遇節點往前走,直到在次回到相遇點,即可計算環的節點數n,然後利...

鍊錶 鍊錶中環的入口結點

給乙個鍊錶,若其中包含環,請找出該鍊錶的環的入口結點,否則,輸出null。知識點回顧 快慢指標 思路 使用快慢指標 假設有p,q兩指標,p每步跨乙個結點,q每步跨兩個結點。那麼經過k步之後q比p多走過的結點數為k。如果鍊錶中沒有環,那麼q永遠在p的前面,兩指標不會相遇。如果鍊錶有環,且環中結點個數為...

鍊錶 鍊錶中環的入口結點

給乙個鍊錶,若其中包含環,請找出該鍊錶的環的入口結點,否則,輸出null 鍊錶中某些結點構成了乙個環,找打環的入口結點 head a1 a2 a3.使用雙層迴圈,例如對於結點a1,遍歷整個鍊錶判斷是否有a1 head next head head next a2,a3,an 依次 測試報錯,沒通過 ...