連結串列找環(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
- 連結串列-單連結串列實現
- python3實現連結串列Python
- Python資料結構——連結串列的實現Python資料結構
- 單連結串列實現
- 連結串列以及golang介入式連結串列的實現Golang
- Linux核心連結串列-通用連結串列的實現Linux
- Python 連結串列實踐Python
- Python實現單向連結串列詳解Python
- 資料結構-雙向連結串列(Python實現)資料結構Python
- FreeRTOS連結串列實現
- 實現雙向連結串列
- C#實現連結串列C#
- python 資料結構之單連結串列的實現Python資料結構
- 【圖解連結串列類面試題】環形連結串列圖解面試題
- 環形連結串列II
- 【資料結構】連結串列(單連結串列實現+詳解+原碼)資料結構
- 連結串列(python)Python
- 連結串列面試題(十一)---求帶環單連結串列 環的入口點面試題
- java實現連結串列反轉Java
- go 實現單向連結串列Go
- Go實現雙向連結串列Go
- TypeScript 實現連結串列反轉TypeScript
- golang 實現連結串列爽不爽?Golang
- java實現雙向連結串列Java
- C語言實現連結串列C語言
- c++實現單連結串列C++
- 迴圈連結串列(約瑟夫問題)--python實現Python
- python 資料結構之雙向連結串列的實現Python資料結構
- LeetCode題解(面試02.08):尋找連結串列與環的交點(Python)LeetCode面試Python
- pta重排連結串列(一個很清晰的實現,完全模擬連結串列的實現)
- 連結串列面試題(十)---求帶環單連結串列的環的長度面試題
- javascript中使用迴圈連結串列實現約瑟夫環問題JavaScript
- 環形連結串列_相交連結串列_多數元素(java語言)Java
- 連結串列面試題(五)---尋找連結串列的倒數第k個結點O(N)面試題
- 教你如何運用python/golang實現迴圈連結串列PythonGolang
- Linked List Cycle leetcode II java (尋找連結串列環的入口)LeetCodeJava