3 環形鍊錶

2021-09-26 05:26:49 字數 833 閱讀 5894

submissions/ 

/** * definition for singly-linked list.

* type listnode struct

*//*

方法一:快慢指標(12ms)

快指標一次走兩步,慢指標一次走一步,如果鍊錶有環,那麼兩個指標始終會相遇。

時間複雜度 o(n),空間複雜度 o(1)

*/ func hascycle(head *listnode) bool

}return false}/*

方法二:hash表(8ms)

將遍歷過的節點記錄下來,如果又遍歷到了,表示鍊錶有環,

時間複雜度o(n),空間複雜度o(n)

*/func hascycle(head *listnode) bool

hash := make(map[*listnode]int)

for head != nil

hash[head]= head.val

head = head.next

}return false}/*

方法三:走自己的路讓別人無路可走思路(8ms)

將遍歷過的節點值修改為乙個後台不太可能設定的值,來標誌這個節點我們遍歷到了。

這個思路雖然有點沙雕,但是一樣能達到 o(1) 的空間複雜度,

*/func hascycle(head *listnode) bool

for head != nil

head.val = 12345678

head = head.next

}return false

}

141 環形鍊錶

給定乙個鍊錶,判斷鍊錶中是否有環。高階 你能否不使用額外空間解決此題?乙個快指標走兩步 乙個慢指標走一步 如果相遇就有環 不然沒環 class solution def hascycle self,head type head listnode rtype bool index1 head inde...

141 環形鍊錶

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

141 環形鍊錶

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