第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

解釋如何在循環(huán)鏈表中查找循環(huán)起始節(jié)點?

解釋如何在循環(huán)鏈表中查找循環(huán)起始節(jié)點?

我知道Tortoise和Hare的會議總結了循環(huán)的存在,但是如何將烏龜移動到鏈接列表的開頭,同時又將野兔保留在聚會地點,然后一次移動兩個步驟,使它們在循環(huán)的起點相遇呢?
查看完整描述

3 回答

?
jeck貓

TA貢獻1909條經驗 獲得超7個贊

這是用于循環(huán)檢測的弗洛伊德算法。您正在詢問算法的第二階段-找到一個節(jié)點是周期的一部分后,如何找到周期的起點?

在弗洛伊德算法的第一部分中,野兔為烏龜?shù)拿恳徊揭苿恿藘刹?。如果烏龜和野兔相遇過,就會有一個循環(huán),并且集合點是循環(huán)的一部分,但不一定是循環(huán)中的第一個節(jié)點。

當烏龜和野兔相遇時,我們找到了最小的i(烏龜采取的步數(shù)),使得X i = X 2i。令mu代表從X 0到循環(huán)開始的步數(shù),令lambda代表循環(huán)的長度。然后,i = mu + a lambda,而2i = mu + b lambda,其中a和b是整數(shù),表示烏龜和野兔在循環(huán)中跑了多少次。從第二個方程中減去第一個方程可得出i =(ba)* lambda,因此i是lambda的整數(shù)倍。 因此,X i + mu = X mu。X i代表烏龜和野兔的交匯點。如果您將烏龜移回起始節(jié)點X0,然后讓烏龜和野兔以相同的速度繼續(xù)前進,經過多步,烏龜將達到X mu,野兔將達到X i + mu = X mu,因此第二個相遇點表示烏龜?shù)拈_始周期。


查看完整回答
1 反對 回復 2019-10-14
?
眼眸繁星

TA貢獻1873條經驗 獲得超9個贊

參考此圖片:


http://img1.sycdn.imooc.com//5da3cef70001b21d06430427.jpg

慢速指針在會議之前經過的距離 = x + y


在會議之前fastPointer行駛的距離 =(x + y + z)+ y = x + 2y + z


由于fastPointer行駛過程中雙 slowPointer的速度,時間是恒定的,當?shù)竭_會合點兩種。


因此,通過使用簡單的速度,時間和距離關系2(x + y)= x + 2y + z => x + 2y + z = 2x + 2y => x = z


因此,通過將slowPointer移動到鏈接列表的開頭,并使slowPointer和fastPointer一次移動一個節(jié)點,它們的覆蓋距離相同。


它們將到達循環(huán)列表中循環(huán)開始的位置。


查看完整回答
反對 回復 2019-10-14
  • 3 回答
  • 0 關注
  • 1066 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號