對於乙個給定的鍊錶,返回環的入口節點,如果沒有環,返回null
拓展:你能給出不利用額外空間的解法麼?
輸入描述:輸入乙個鍊錶
輸出描述:輸出環的入口節點
輸入
輸出hash表(使用額外的空間):通過遍歷記錄到hash表的方式找到環形鍊錶的入口
時間負責度:o(n)
空間負責度:o(n)
快慢指標(不使用額外空間):通過快慢指標的方式實現,下面具體介紹:
論證過程:(注意,快慢指標這裡的起點都是0)假設鍊錶中存在環,環的長度為b,非環的長度為b通過哈說表。1、計算 fast 和 slow 走過的路程,這裡我們假設他們走了n圈後相遇
fast = 2slow
fast = slow + nb
公式量表相等:
2slow = slow + nb
得:slow = nb
fast = 2nb
----------------------------------
2、走多少步才能到入口
enter = a + nb
----------------------------------
3、fast指標與slow的第二次相遇
fast = 0;
slow = nb;
fast和slow指標都走了a步:
fast = a;
slow = a + nb
此時他們在入口相遇
通過快慢指標,下圖為演示過程,採用力扣的
// 思路1
public
class
solution
else
pos = pos.next;
}return null;
}}
// 思路2
public
class
solution
slow = slow.next;
fast = fast.next.next;
if(slow == fast)
} fast = head;
while
(slow != fast)
return slow;
}}
小夥伴如果想測試的話,可以直接到牛客網這個鏈結做測試
鍊錶中環的入口節點-牛客網
牛客網 高頻面試題 鍊錶中環的入口節點
鍊錶中環的入口節點 牛客題霸 牛客網 題目描述 對於乙個給定的鍊錶,返回環的入口節點,如果沒有環,返回null 拓展 你能給出不利用額外空間的解法麼?如下圖所示,x,y,z分別為鍊錶起始位置,環開始位置和兩指標相遇位置,則根據快指標速度為慢指標速度的兩倍,可以得出 2 a b a b n b c 即...
牛客 鍊錶中環的入口結點
題目描述 給乙個鍊錶,若其中包含環,請找出該鍊錶的環的入口結點,否則,輸出null。1,設乙個快指標fast每次走兩個節點和乙個慢指標slow每次走乙個節點,如果鍊錶中存在環,則快指標和滿指標一定會相遇 2,設頭節點距環入口的距離為a,環入口距快慢指標相遇節點的距離為b,快慢指標相遇節點距環入口的距...
牛客 劍指offer 鍊錶中環的入口節點
題目 鍊錶中環的入口節點 思路 不考慮空間,可以用乙個集合來做。考慮空間 若有環,快慢指標必定會相遇。如下圖 a是鍊錶起始節點,b是環的入口,c是快慢指標相交的位置。相遇時 快指標走過 a b c b 慢指標走過 a b。由於快指標每次移動2步,因此,相遇時,快指標走的路程是慢指標的2倍。所以,有 ...