LeetCode題目(Python實現) 環形鍊錶

2021-10-03 12:43:41 字數 2034 閱讀 9209

雜湊表法

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

為了表示給定鍊錶中的環,我們使用整數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

solution

:def

hascycle

(self, head: listnode)

->

bool:if

not(head and head.

next):

return

false

slow = head

fast = head.

next

while fast.

next

and fast.

next

.next

:if slow == fast:

return

true

slow = slow.

next

fast = fast.

next

.next

return

false

執行結果: 通過

執行用時: 52 ms, 在所有 python3 提交中擊敗了77.58%的使用者

記憶體消耗: 16.8 mb, 在所有 python3 提交中擊敗了19.14%的使用者

先按照自己的想法設計,用快慢指標的方法,當快指標和慢指標相遇時,說明有環,否則快指標會到達尾部從而跳出迴圈。之後學習了雜湊表法,通過建立字典,一邊遍歷鍊錶,一邊查詢並將節點加入字典中,由於雜湊表查詢時間複雜度低,所以會快很多。

leetcode 字母異位詞分組(python)

題目 給定乙個字串陣列,將字母異位片語合在一起。字母異位詞指字母相同,但排列不同的字串。示例 輸入 eat tea tan ate nat bat 輸出 ate eat tea nat tan bat 說明 所有輸入均為小寫字母。不考慮答案輸出的順序。注意 需熟悉字典的相關使用方法 class so...

leetcode 200 島嶼數量 python

給你乙個由 1 陸地 和 0 水 組成的的二維網格,請你計算網格中島嶼的數量。島嶼總是被水包圍,並且每座島嶼只能由水平方向或豎直方向上相鄰的陸地連線形成。此外,你可以假設該網格的四條邊均被水包圍。示例 1 輸入 11110 11010 11000 00000 輸出 1示例 2 輸入 11000 11...

leetcode 字母異位詞分組 python3

給定乙個字串陣列,將字母異位片語合在一起。字母異位詞指字母相同,但排列不同的字串。示例 輸入 eat tea tan ate nat bat 輸出 ate eat tea nat tan bat 說明 所有輸入均為小寫字母。不考慮答案輸出的順序。python中使用 字典 維護乙個分組表,鍵值 key...