給定乙個鍊錶,判斷它是否有環。
給出-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一定...