在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/人工智能/ 為什么單鏈表環(huán)第一次快慢指針相遇后快指針指回頭節(jié)點(diǎn),之后快慢止指針移動(dòng)一步會(huì)在第

為什么單鏈表環(huán)第一次快慢指針相遇后快指針指回頭節(jié)點(diǎn),之后快慢止指針移動(dòng)一步會(huì)在第一個(gè)入環(huán)點(diǎn)相遇?

為什么單鏈表環(huán)第一次快慢指針相遇后快指針指回頭節(jié)點(diǎn),之后快慢止指針移動(dòng)一步會(huì)在第一個(gè)入環(huán)點(diǎn)相遇?

回答
編輯回答
笨小蛋

這個(gè)還是比較好理解的。
畫了張簡(jiǎn)陋的圖。代表鏈表中存在環(huán)的情況(B為環(huán)的起點(diǎn)處)。默認(rèn)慢指針步長(zhǎng)為1,快指針步長(zhǎng)為2。

                ...
               .   .
              .     .
               .   C
                . .
A................B

慢指針到達(dá)環(huán)的時(shí)候,快指針已經(jīng)先一步到達(dá)環(huán)了。所以假設(shè)快慢指針在環(huán)上某點(diǎn)C處相遇。
由圖得,2AC = AC + CC(整個(gè)環(huán)的周長(zhǎng)),即AC = CC。AC和CC中有一個(gè)公共段BC。可以得到AB = CB(較長(zhǎng)的?。?br>因?yàn)橄嘤鳇c(diǎn)在C(快慢指針都在C處),這時(shí)候讓兩個(gè)指針分別從點(diǎn)C和點(diǎn)A均以步長(zhǎng)為1的速度遍歷。自然在點(diǎn)B處相遇(第一個(gè)入環(huán)點(diǎn))。

如有不對(duì)請(qǐng)指正。

2017年2月5日 00:14