劍指offer 55 鍊錶中環的入口結點

2021-09-24 22:56:05 字數 654 閱讀 7992

1.題目描述

給乙個鍊錶,若其中包含環,請找出該鍊錶的環的入口結點,否則,輸出null。

2.解題思路

方法1:

方法2:

鍊錶包含環,像數字6的圖形。

- (1)設定快慢指標,假設快指標在環內與慢指標相遇,設頭節點到入口結點的距離為x,入口結點到相遇點為y,相遇點到入口結點距離為z,則有(x+y)*2 = (x+y+z+y),即z = x,即相遇點到入口結點的距離跟頭節點到入口結點的距離相等。

- (2)這時再設定fast = phead,乙個指標重頭走,另乙個指標重相遇節點走,當兩個點相等時即為入口節點所在。

3.**

方法1:

public listnode entrynodeofloop

(listnode phead)

return null;

}

方法2:

/*

public class listnode }*/

public

class

solution

return fast;}}

return null;

}}

劍指offer 55 鍊錶中環的入口結點

給乙個鍊錶,若其中包含環,請找出該鍊錶的環的入口結點,否則,輸出null。找環的入口這個問題,其實是建立在另外乙個問題之上的 判斷單向鍊錶是否有環 土方法很多,但是比較好的目前就那麼乙個 一開始設定兩個指標都指向表頭,其中乙個每次 一步 前進乙個節點的叫p1,另外那個每次 一步 前進兩個節點的叫p2...

劍指offer55 鍊錶中環的入口結點

給乙個鍊錶,若其中包含環,請找出該鍊錶的環的入口結點,否則,輸出null。設定塊 慢指標,快指標沒次走兩步,慢指標每次走一步,如果有環,它們一定會相遇 否則快指標會先到最後。相遇後選乙個指標在頭結點,然後與慢指標同時移動,相遇位置就為環入口 走一步和兩步 while slow fast if fas...

劍指offer 55 鍊錶中環的入口結點

給乙個鍊錶,若其中包含環,請找出該鍊錶的環的入口結點,否則,輸出null。時間限制 1秒 空間限制 32768k 熱度指數 144136 本題知識點 鍊錶 見 struct listnode class solution while slow fast 2.計算環內長度 int l 0 dowhil...