142 環形鍊錶 II

2021-10-04 06:06:44 字數 683 閱讀 7652

141環形鍊錶的高階版,環形鍊錶是返回布林值,判斷是否為環形鍊錶(做過),方法有兩種,有空間複雜度的雜湊表,沒有空間複雜度的快慢指標。

本高階題是返回環形鍊錶的鍊錶尾連線到鍊錶中的位置

class

solution

(object):

defdetectcycle

(self, head):if

not(head and head.

next):

return

fast,slow=head,head

while

true:if

not(fast and fast.

next):

return

fast,slow=fast.

next

.next

,slow.

next

if fast == slow:

break

fast=head

while fast != slow:

fast,slow=fast.

next

,slow.

next

return fast

實現參考原理-leetcode

時間複雜度o(n)

空間複雜度o(1)雙指標使用常數大小的額外空間

142 環形鍊錶 II

還是快慢指標的問題,當發現有環時,將fast指向head,fast一次向前移動乙個節點,則fast和slow一定會在環的入口相遇.證明 設s為slow指標走的節點個數,m為環的入口距head的位置 則第一次相遇時,fast和head相對於環入口的位置相同,fast在環中的相對於環入口的位置在 2s ...

142 環形鍊錶 II

給定乙個鍊錶,返回鍊錶開始入環的第乙個節點。如果鍊錶無環,則返回null。說明 不允許修改給定的鍊錶。高階 你是否可以不用額外空間解決此題?definition for singly linked list.struct listnode class solution node set.insert...

142 環形鍊錶 II

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