牛客 劍指offer 鍊錶中環的入口節點

2021-10-21 10:57:43 字數 684 閱讀 9500

題目:鍊錶中環的入口節點

思路:

不考慮空間,可以用乙個集合來做。

考慮空間:若有環,快慢指標必定會相遇。如下圖:

a是鍊錶起始節點,b是環的入口,c是快慢指標相交的位置。

相遇時:快指標走過:a + b + c + b;慢指標走過:a + b。

由於快指標每次移動2步,因此,相遇時,快指標走的路程是慢指標的2倍。所以,有:

a + b + c + b = 2 * (a + b),即a = c。

相遇後,把slow指向head,slow和fast同步移動,再次相遇就是入口節點。

**:

/**

* definition for singly-linked list.

* class listnode

* }*/public

class

solution

listnode slow = head;

listnode fast = head;

while

(fast != null && fast.next != null)

return slow;}}

return null;

}}

《劍指offer》鍊錶專題 牛客10 23

難度 題目知識點 03.返回鍊錶的反序 vector 遞迴,c stl reverse 14.鍊錶中倒數第k個結點 指標操作 15.反轉鍊錶 頭插法,遞迴 16.合併兩個有序鍊錶 指標操作 25.複雜鍊錶的複製 深度複製 36.兩個鍊錶的第乙個公共結點 棧輔助,鍊錶拼接,鍊錶擷取 55.鍊錶中環的入...

劍指offer 鍊錶中環的入口

問題描述 給乙個鍊錶,若其中包含環,請找出該鍊錶的環的入口結點,否則,輸出null。假設x為環前面的路程 紅色路程 a為環入口到相遇點的路程 綠色路程,假設順時針走 c為環的長度 藍色路程 設定快慢指標fast和slow,快指標的速度是慢指標的兩倍 當快慢指標相遇的時候 此時慢指標走的路程為sslo...

牛客網劍指offer反轉鍊錶 python實現

1.首先看一下鍊錶的資料結構 鍊錶由節點構成,每個節點包含兩個部分,第一部分是資料,第二部分是鏈結資料的儲存位置資訊。如 第乙個節點儲存了資料 1 第二部分儲存了後面乙個資料 2 的儲存位置資訊。最後乙個節點是none。2.python實現鍊錶反 coding utf 8 class listnod...