給定乙個鍊錶,判斷鍊錶中是否有環。示例 1:如果鍊錶中有某個節點,可以通過連續跟蹤 next 指標再次到達,則鍊錶中存在環。 為了表示給定鍊錶中的環,我們使用整數 pos 來表示鍊錶尾連線到鍊錶中的位置(索引從 0 開始)。 如果 pos 是 -1,則在該鍊錶中沒有環。注意:pos不作為引數進行傳遞,僅僅是為了標識鍊錶的實際情況。
如果鍊錶中存在環,則返回 true 。 否則,返回 false 。
高階:你能用 o(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 解釋 鍊錶中有乙個環,其尾部...