正解在這里:假設(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牵舵;提取一個r出來柒啤,則 a = (m - 2n + 1)r + r - b;又因為(m-2n+1)r就是換的若干倍畸颅,那么a和b的關(guān)系就是從相遇點算 r-b=a担巩,這也就是網(wǎng)上很多解法是,先用快慢指針?biāo)愠鱿嘤鳇c没炒,然后讓其中一個指針指向頭涛癌,再次相遇就是環(huán)入口的解法的原因。
鏈表找出環(huán)的入口給定一個鏈表送火,返回鏈表開始入環(huán)的第一個節(jié)點拳话。 如果鏈表無環(huán),則返回 null种吸。說明:不允許修改給定的鏈表弃衍。你是否可以不用額外空間解決此題? https://leetcode-...