力扣筆記 判斷鍊錶是否成環以及返回入環的第乙個節點

2021-10-23 18:42:28 字數 582 閱讀 1088

相遇的時候,慢指標走過的節點是:x+y;快指標走過的節點是x+n(y+z)+y;

所以,2(x+y)=x+n(y+z)+y; x=z+(n-1)(y+z)

也就是說:分別從頭節點和相遇節點處出發的兩個節點(temp1、temp2),每次移動乙個節點,一定會在入環節點處相遇。且移動的節點數:temp1是:x,temp2是:z+(n-1)(y+z)

順便總結一下是否成環的判斷方法:

鍊錶為空 或 鍊錶只有乙個節點,且next指向本身,此時一定不存在環;

存在環的話,fast每次移動兩個節點,slow每次移動乙個節點,一旦fast或fast 的next為null,說明鍊錶不存在環;一旦fast==slow,就說明環存在;

/**

* definition for singly-linked list.

* struct listnode

* };

*/class

solution

return temp1;}}

return

nullptr;}

};

鍊錶是否成環

鍊錶是否成環 判斷鍊錶是否成環 快慢指標,快指標每次移動兩次,滿指標每次移動一次,如果鍊錶有環,快指標一定可以追上滿指標,對比生活中的跑步問題,乙個操場,跑的快的人一定可以追上跑的慢的人 package com.test public class node public boolean hascyc...

判斷鍊錶是否有環以及尋找環入口

思路 採用 快慢指標 查檢查鍊錶是否含有環。讓乙個指標一次走一步,另乙個一次走兩步,如果鍊錶中含有環,快的指標會再次和慢的指標相遇。這裡需要注意的一點是演算法中迴圈的條件,這是乙個很容易被忽略的細節。1 因為fast指標比slow指標走得快,所以只要判斷fast指標是否為空就好。由於fast指標一次...

鍊錶判斷是否存在環以及環的入口

快慢指標的方法 class solution else return false if pfast plow return true return false 快慢指標的方法 分為兩個階段,第一階段先尋找是否有環,第二階段通過快慢指標的回合點找到環的入口。借用leetcode上的圖來說明 首先環的長...