lintcode練習 102 帶環鍊錶

2021-08-23 14:10:21 字數 867 閱讀 6444

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

給出-21->10->4->5, tail connects to node index 1,返回 true

不要使用額外的空間

實現**:

思路:快慢指標的典型應用,使用快指標 fast 與慢指標 slow,slow每次後移一位,fast 每次後移兩位,當fast 與 slow 指向同一節點時,說明存在環。就如同操場跑圈時,領先一圈的人會遇上跑在他後面的人那樣。

"""

definition of listnode

class listnode(object):

def __init__(self, val, next=none):

self.val = val

self.next = next

"""class solution:

"""@param: head: the first node of linked list.

@return: true if it has a cycle, or false

"""def hascycle(self, head):

# write your code here

if head is none or head.next is none:

return false

slow, fast = head, head.next

while fast and fast.next:

if slow == fast:return true

slow, fast = slow.next, fast.next.next

return false

Lintcode 102 帶環鍊錶

題目描述 給定乙個鍊錶,判斷它是否有環。這道題如果使用額外空間的話,可以借用set,每走過乙個點就放到set中,當走著走著再次碰到之前的點了就說明有環。下面使用不耗費額外空間的方法 快慢指標實現。解題思路 快慢指標的經典題。快指標每次走兩步,慢指標一次走一步。在慢指標進入環之後,快慢指標之間的距離每...

102 帶環鍊錶

帶環鍊錶得幾個問題 判斷乙個鍊錶是否有環,如果有環,則返回入環的第乙個節點,否則返回null 如果乙個鍊錶有環,遍歷乙個鍊錶便永遠不會到達null,否則必定會到達null。設定兩個指標,剛開始都指向頭節點,遍歷時,乙個指標每次前進一步,我們稱之為慢指標,另乙個每次前進兩步,稱之為快指標,這樣,如果鍊...

LintCode 帶環鍊錶

給定乙個鍊錶,判斷它是否有環。參考了網上一些資料,算是乙個總結。感謝sunflower yolanda的文章。由這個問題可以引申出來幾個問題,先解決本身。1.判斷是否有環。利用兩個指標slow fast。初始時,兩個指標都在表頭。slow每次走一步,fast每次走兩步。如果不存在環,那麼fast一定...