給定一個鏈表,判斷鏈表中是否有環。
爲了表示給定鏈表中的環,我們使用整數 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
輸出:false
解釋:鏈表中沒有環。
思路
一個指針指向下一位,一個指針指向下一位的下一位,只要兩個指向的相同,就說明走了一個環。
那就是說明只要相遇就是環形,那麼While的條件就出來了:
while 不相遇:
if 有一個空了:
沒得玩,不是環形
head.next--------|
|-賦值
head.next.next---|
相遇了,真得環形
# Definition for singly-linked list.
# class ListNode(object):
# def __init__(self, x):
# self.val = x
# self.next = None
class Solution(object):
def hasCycle(self, head):
"""
:type head: ListNode
:rtype: bool
"""
if head == None or head.next == None:
return False
s = head
f = head.next
while s!=f:
if f == None or f.next == None :
return False
s = s.next
f = f.next.next
return True