正解在這里:假設(shè) 頭到環(huán)入口的距離是a, 快慢指針相遇距離環(huán)入口距離是b,環(huán)的長度是r,快指針走過的距離為f概而,慢指針走過的距離是s,快指針繞環(huán)走了m圈,慢指針繞環(huán)走了n圈(m>n)慷丽,則:
f = a + mr + b;
s = a + nr + b鳄哭;
由于快指針是慢指針的2倍要糊,則f=2s;三式疊加可得:2(a + nr + b)= a + mr +b妆丘;進(jìn)而推導(dǎo)出: a = (m - 2n)r - b锄俄;提取一個(gè)r出來,則 a = (m - 2n + 1)r + r - b飘痛;又因?yàn)?m-2n+1)r就是換的若干倍珊膜,那么a和b的關(guān)系就是從相遇點(diǎn)算 r-b=a,這也就是網(wǎng)上很多解法是宣脉,先用快慢指針?biāo)愠鱿嘤鳇c(diǎn)车柠,然后讓其中一個(gè)指針指向頭,再次相遇就是環(huán)入口的解法的原因塑猖。
鏈表找出環(huán)的入口給定一個(gè)鏈表竹祷,返回鏈表開始入環(huán)的第一個(gè)節(jié)點(diǎn)。 如果鏈表無環(huán)羊苟,則返回 null塑陵。說明:不允許修改給定的鏈表。你是否可以不用額外空間解決此題蜡励? https://leetcode-...