環形鍊錶的判斷 如有環,返回入環的第乙個結點

2021-10-24 14:56:46 字數 727 閱讀 7002

思路:從表頭開始遍歷每乙個節點,並且存入set集合裡,一旦遇到了此前碰到過的節點,就可以判定鍊錶中存在環。

/**

* definition for singly-linked list.

* struct listnode

* };

*/class

solution

return head;}}

;

使用兩個指標fast,slow,fast是從表頭開始依次往後移動兩個節點,solw從表頭開始依次往後移動乙個節點,當鍊表中存在環時,兩個指標必定會相遇。相遇情況如下圖所示:

即快慢相遇後表頭到入環點的距離與環中b點到入環點的距離一樣,此時,我們再用乙個ptr指標從表頭與slow指標同時移動,兩這相遇的點即是入環點。

/**

* definition for singly-linked list.

* struct listnode

* };

*/class

solution

return ptr;}}

return fast;}}

;

鍊錶判斷是否有環,如有,找入環節點

一條鍊錶如何判斷是否有環?若是有環那怎麼找到鍊錶環的入口?思路 用快慢兩個指標分別從煉表頭開始,慢指標一次走乙個節點,快指標一次走兩個節點next next,這樣如果有環那快指標務必會跑到慢指標後面,隨即兩者之間的距離一次會縮小一步,最終相遇。若是未相遇且快指標的 next 為 null,則說明鍊錶...

環形鍊錶判斷環問題

環形鍊錶查詢問題 給定乙個鍊錶,判斷鍊錶中是否有環。如果鍊錶中有某個節點,可以通過連續跟蹤 next 指標再次到達,則鍊錶中存在環。為了表示給定鍊錶中的環,我們使用整數 pos 來表示鍊錶尾連線到鍊錶中的位置 索引從 0 開始 如果 pos 是 1,則在該鍊錶中沒有環。注意 pos 不作為引數進行傳...

環形鍊錶2 找入環結點)

思路 針對這個題,需要分情況討論。有環存在和無環存在兩種情況。如何確定鍊錶是否帶環?可以利用快慢指標的思路 定義乙個快指標,乙個慢指標,初始位置都放在煉表表頭的位置,讓快指標每次走兩步,慢指標每次走一步,若快指標走到了null,則說明這個鍊錶沒有環。若快指標沒有走到null而且慢指標追上了快指標,此...