連結串列找環(python實現)
具體思路我就不在這照貓畫虎啦,具體的演算法思路可以看一下這篇文章,文章思路很清晰,文筆很詼諧幽默,我就直接上程式碼吧,python語言實現:
# coding:utf-8
#節點類
class Node(object):
def __init__(self, value):
self.val = value
self.next = None
#連結串列找環方法一
#用一個列表來儲存走過的連結串列結點,然後在遍歷節點過程觀察結點是否會重複出現
def findloop(start):
vector = []
while start:
if start in vector:
return True
vector.append(start)
start = start.next
return False
#這種思路的時間複雜度為O(n*n),空間複雜度為O(n)(用了一個臨時列表儲存被遍歷過的節點)
##=====================================分割線=====================================##
#連結串列找環方法二
#快慢指標法,如果連結串列有環,那麼快的指標一定會再次遇到慢的指標(可以參考美隊二片頭
#美隊和獵鷹跑步那個場景)
def newfindloop(start):
first = start
second = start
while second:
first = first.next
if second.next == None:
return False
second = second.next.next
if first == second:
return True
return False
#這種思路時間複雜度為O(n),空間複雜度為O(1)
#建立一個連結串列
node1 = Node(1)
node2 = Node(2)
node3 = Node(3)
node4 = Node(4)
node5 = Node(5)
node1.next = node2
node2.next = node3
node3.next = node4
node4.next = node5
node5.next = node2
print(findloop(node1))
print(newfindloop(node1))
相關文章
- Python實現環形連結串列詳解Python
- Python實現單連結串列Python
- 連結串列-單連結串列實現
- Python 連結串列實踐Python
- Python實現單向連結串列詳解Python
- LeetCode題解(面試02.08):尋找連結串列與環的交點(Python)LeetCode面試Python
- 資料結構-雙向連結串列(Python實現)資料結構Python
- FreeRTOS連結串列實現
- 連結串列找環方法證明(拒絕誤人子弟)
- 環形連結串列
- 連結串列(python)Python
- 實現雙向連結串列
- 尋找連結串列相交結點問題
- LeetCode-Python-86. 分隔連結串列(連結串列)LeetCodePython
- 單連結串列成環
- 環形連結串列II
- 【資料結構】連結串列(單連結串列實現+詳解+原碼)資料結構
- TypeScript 實現連結串列反轉TypeScript
- Go實現雙向連結串列Go
- go 實現單向連結串列Go
- java實現連結串列反轉Java
- java實現雙向連結串列Java
- golang 實現連結串列爽不爽?Golang
- 019 透過連結串列學Rust之雙連結串列實現PeekRust
- 019 通過連結串列學Rust之雙連結串列實現PeekRust
- 教你如何運用python/golang實現迴圈連結串列PythonGolang
- 迴圈連結串列(約瑟夫問題)--python實現Python
- 【圖解連結串列類面試題】環形連結串列圖解面試題
- pta重排連結串列(一個很清晰的實現,完全模擬連結串列的實現)
- 單連結串列建立連結串列出現問題
- 142. 環形連結串列
- 141. 環形連結串列
- 連結串列有環知多少~
- 2024/12/2【連結串列】LeetCode 142 環形連結串列 II 【X】LeetCode
- 環形連結串列_相交連結串列_多數元素(java語言)Java
- 簡單介紹python中的單向連結串列實現Python
- PHP 使用連結串列實現對映PHP
- 圖解雙連結串列(Java實現)圖解Java