題目要求
給定一個鏈表蜒灰,判斷鏈表中是否有環(huán)。
為了表示給定鏈表中的環(huán),我們使用整數(shù) pos
來表示鏈表尾連接到鏈表中的位置(索引從 0 開始)澜术。 如果 pos
是 -1
,則在該鏈表中沒有環(huán)猬腰。
示例 1:
輸入:head = [3,2,0,-4], pos = 1
輸出:true
解釋:鏈表中有一個環(huán)鸟废,其尾部連接到第二個節(jié)點(diǎn)。
示例 2:
輸入:head = [1,2], pos = 0
輸出:true
解釋:鏈表中有一個環(huán)姑荷,其尾部連接到第一個節(jié)點(diǎn)盒延。
示例 3:
輸入:head = [1], pos = -1
輸出:false
解釋:鏈表中沒有環(huán)丑掺。
思路一
用兩個節(jié)點(diǎn)遍歷鏈表胳喷,一快一慢,若快慢節(jié)點(diǎn)能相遇溅漾,證明鏈表中存在環(huán)
→_→ talk is cheap, show me the code
# 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 not head:
return False
p = q = head
while p.next and p.next.next:
p = p.next.next
q = q.next
if p == q:
return True
return False