leetcode 142 環形鍊錶 II

2021-10-08 12:43:31 字數 1239 閱讀 1472

142. 環形鍊錶 ii

給定乙個鍊錶,返回鍊錶開始入環的第乙個節點。 如果鍊錶無環,則返回 null。

為了表示給定鍊錶中的環,我們使用整數 pos 來表示鍊錶尾連線到鍊錶中的位置(索引從 0 開始)。 如果 pos 是 -1,則在該鍊錶中沒有環。

說明:不允許修改給定的鍊錶。

示例 1:

輸入:head = [3,2,0,-4], pos = 1

輸出:tail connects to node index 1

解釋:鍊錶中有乙個環,其尾部連線到第二個節點。

快慢指標在第一次相遇的時候,一定在環上,這個時候做乙個設定。

設起點到環入口距離為a

快慢指標首次相遇的地方距離入口為b

我們可以知道慢指標走了 (a+b) , 而快指標走了 2*(a+b),如果慢指標在走(a+b)[相當於快指標],那麼慢指標又會回到第一次相遇的位置。

由於我們需要找到入口位置,那麼慢指標只需要走a的長度就可以達到入口位置,如果此時起點和慢指標一起走,那麼我們就可以找到入口位置。

# definition for singly-linked list.

# class listnode:

# def __init__(self, x):

# self.val = x

# self.next = none

class

solution

:def

detectcycle

(self, head: listnode)

-> listnode:

ifnot head:

return

none

fast = head

slow = head

while fast.

next

: fast = fast.

next

.next

slow = slow.

next

ifnot fast:

return

none

elif fast == slow:

while head != slow:

head = head.

next

slow = slow.

next

return slow

return

none

leetcode 142 環形鍊錶

給定乙個鍊錶,返回鍊錶開始入環的第乙個節點。如果鍊錶無環,則返回null。說明 不允許修改給定的鍊錶。思路 首先通過快慢指標的方法判斷鍊錶是否有環 接下來如果有環,則尋找入環的第乙個節點。具體的方法為,首先假定鍊錶起點到入環的第乙個節點a的長度為a 未知 到快慢指標相遇的節點b的長度為 a b 這個...

leetcode 142環形鍊錶

給定乙個鍊錶,返回鍊錶開始入環的第乙個節點。如果鍊錶無環,則返回 null。為了表示給定鍊錶中的環,我們使用整數 pos 來表示鍊錶尾連線到鍊錶中的位置 索引從 0 開始 如果 pos 是 1,則在該鍊錶中沒有環。說明 不允許修改給定的鍊錶。example 輸入 head 3,2,0,4 pos 1...

Leetcode 142 環形鍊錶

問題重述 給定乙個鍊錶,返回鍊錶開始入環的第乙個節點。如果鍊錶無環,則返回 null。為了表示給定鍊錶中的環,我們使用整數 pos 來表示鍊錶尾連線到鍊錶中的位置 索引從 0 開始 如果 pos 是 1,則在該鍊錶中沒有環。注意,pos 僅僅是用於標識環的情況,並不會作為引數傳遞到函式中。說明 不允...