給定乙個鍊錶,判斷鍊錶中是否有環。
為了表示給定鍊錶中的環,我們使用整數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高階:你能用 o(1)(即,常量)記憶體解決此問題嗎?輸出:false
解釋:鍊錶中沒有環。
一開始題意理解錯了,都輸入了pos還判斷環形做什麼,後來明白了,pos並不是直接給出的。
那麼做法就清晰起來了。快慢指標的思路。快指標永遠比慢指標快一步。
假設沒有環形,快指標走到末尾就結束了。
假設有環形,快指標到末尾後又回到了迴圈中,雖然此時慢指標的位置並不固定,但是因為快指標永遠比慢指標快一步,所以在經過若干個迴圈後,兩個指標必定會相遇,也就表示有環形。
這裡的**和官方題解略有不同,使用了啞節點來避開空煉表報錯的陷阱。
**如下:
publicclass
solution
return
true
; }
}
力扣(LeetCode) 141 環形鍊錶
給定乙個鍊錶,判斷鍊錶中是否有環。如果鍊錶中有某個節點,可以通過連續跟蹤 next 指標再次到達,則鍊錶中存在環。為了表示給定鍊錶中的環,我們使用整數 pos 來表示鍊錶尾連線到鍊錶中的位置 索引從 0 開始 如果 pos 是 1,則在該鍊錶中沒有環。注意 pos 不作為引數進行傳遞,僅僅是為了標識...
力扣 141 環形鍊錶
題目 給定乙個鍊錶,判斷鍊錶中是否有環。為了表示給定鍊錶中的環,我們使用整數 pos 來表示鍊錶尾連線到鍊錶中的位置 索引從 0 開始 如果 pos 是 1,則在該鍊錶中沒有環。示例 1 輸入 head 3,2,0,4 pos 1 輸出 true 解釋 鍊錶中有乙個環,其尾部連線到第二個節點。示例 ...
力扣 141 環形鍊錶
給定乙個鍊錶,判斷鍊錶中是否有環。為了表示給定鍊錶中的環,我們使用整數 pos 來表示鍊錶尾連線到鍊錶中的位置 索引從 0 開始 如果 pos 是 1,則在該鍊錶中沒有環。該題目來自力扣題庫 示例示例1 輸出 true 鍊錶中有乙個環,其尾部連線到第二個節點 示例2 輸入 head 1,2 pos ...