鍊錶 (判斷環形鍊錶)演算法

2021-10-04 17:52:17 字數 1317 閱讀 3084

# -*- coding:utf-8 -*-

"""

author: leadingme

mail:[email protected]

mywebsite:leadingme.top

"""# 環形鍊錶

""" 演算法要求:

給定乙個鍊錶,判斷鍊錶中是否有環

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

示例1:

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

輸出: true

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

示例2:

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

輸出: true

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

示例3:

輸出: head = [1], pos = -1

輸出: false

解釋: 鍊錶中沒有環

"""class

listnode

(object):

def__init__

(self, value)

: self.val = value

self.

next

= node

class

solution

(object):

defhascycle

(self, head:listnode)

->

bool

:if head is

none

:return

false

fast = slow = head #定義兩個指標,快指標每次後移兩個,慢指標每次移動乙個

while fast:

# 類似於操場跑圈,最終快的會趕超慢的從而相遇

try:

fast = fast.

next

.next

slow = slow.

next

except

:return

false

if fast is

none

or slow is

none

:# 如果兩個指標有乙個為空,則沒有環

return

false

if fast == slow:

#如果兩個指標最終指向同一節點,則有環

return

true

判斷環形鍊錶

最開始想到的處理方式是整個陣列,把鍊錶元素乙個乙個放進去,直到有重複的,class solution def hascycle self,head listnode bool tgt while head head head.next if head and head.val in tgt retu...

環形鍊錶判斷

141 環形鍊錶 思路 將訪問過的放到乙個容器中,然後判斷當前訪問的節點是否已經存在容器內 141 1 放到容器中,判斷當前的節點是否在已訪問的容器內 bool hascycle listnode head return false 提交後 5 時間複雜度o n 空間複雜度o n 因為使用了額外的容...

初級演算法 鍊錶 環形鍊錶

給定乙個鍊錶,判斷鍊錶中是否有環。為了表示給定鍊錶中的環,我們使用整數 pos 來表示鍊錶尾連線到鍊錶中的位置 索引從 0 開始 如果 pos 是 1,則在該鍊錶中沒有環。示例 1 輸入 head 3,2,0,4 pos 1 輸出 true 解釋 鍊錶中有乙個環,其尾部連線到第二個節點。示例 2 輸...