題意
如果一個鏈表中包含環,如何找出環的入口節點。
思路
感覺思路比較巧妙,就只說思路。
- 要找到環,就用兩個指針,一個一次走一個節點,一個一次走兩個節點,如果快的節點能和慢的節點相遇,說明有環,如果快的節點在到達結尾都沒有追到慢節點,說明沒有環。
- 找到環怎麼找入口呢。只要知道環的元素個數n,讓一個指針先走n個節點,然後讓另一個節點從起點開始走。二者相遇的節點就是入口節點。
- 怎麼知道元素個數n呢。在1的時候兩個節點如果相遇,就肯定是在環中相遇。那麼記錄這個節點,下次指針再經過這個節點的時候就能獲得元素個數。