LeetCode第141題 環形鍊錶的判斷

2021-10-19 07:35:26 字數 1199 閱讀 6418

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

如果鍊錶中有某個節點,可以通過連續跟蹤 next 指標再次到達,則鍊錶中存在環。 為了表示給定鍊錶中的環,我們使用整數 pos 來表示鍊錶尾連線到鍊錶中的位置(索引從 0 開始)。 如果 pos 是 -1,則在該鍊錶中沒有環。注意:pos不作為引數進行傳遞,僅僅是為了標識鍊錶的實際情況。

如果鍊錶中存在環,則返回 true 。 否則,返回 false 。

高階:你能用 o(1)(即,常量)記憶體解決此問題嗎?

示例 1:

輸入:head =[3

,2,0

,-4]

, pos =

1輸出:true

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

示例 2:

輸入:head =[1

,2], pos =

0輸出:true

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

示例 3:

輸入:head =[1

], pos =-1

輸出:false

解釋:鍊錶中沒有環。

最簡單的一種方式就是快慢指標,慢指標針每次走一步,快指標每次走兩步,如果相遇就說明有環,如果有乙個為空說明沒有環。

這題也可以使用反轉鍊錶解決,如果有環,那麼鍊錶反轉之後,原來的頭結點和反轉之後的頭結點一定是同乙個。可以參考文章:反轉鍊錶

/**

* 快慢指標的解法

* @param head

* @return

*/public

boolean

hascycle

(listnode head)

return

false

;}

提交結果:

LeetCode第141題 環形鍊錶

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

LeetCode第141題環形鍊錶

題目描述 給定乙個鍊錶,判斷鍊錶中是否有環。為了表示給定鍊錶中的環,我們使用整數 pos 來表示鍊錶尾連線到鍊錶中的位置 索引從 0 開始 如果 pos 是 1,則在該鍊錶中沒有環。解題思路 1 初步想法 沒有想法,估計是沒怎麼接觸鍊錶的題,看到別人的 用了兩個變數,乙個變數走一步,乙個變數走兩步,...

Leetcode第141題 環形鍊錶

給定乙個鍊錶,判斷鍊錶中是否有環。如果鍊錶中存在環,則返回 true 否則,返回 false 示例 1 輸入 head 3,2,0,4 pos 1 輸出 true 解釋 鍊錶中有乙個環,其尾部連線到第二個節點。示例 2 輸入 head 1,2 pos 0 輸出 true 解釋 鍊錶中有乙個環,其尾部...