题目:
给定一个链表,检测该链表是否有环。有环返回True,否则返回False。
解题思路:
建立一个快指针和一个慢指针,快指针移动速度为慢指针的两倍,若两个指针能碰上,则说明链表有环,否则链表无环。
代码:
# 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:
return False
head_1 = head
head_2 = head.next
while(head_2):
if head_2.val == head_1.val:
return True
try:
head_2 = head_2.next.next
except:
return False
head_1 = head_1.next
return False
本文介绍了一种检测链表中是否存在环的有效算法。通过使用快慢指针技巧,该算法能在O(n)时间内完成检测,而空间复杂度仅为O(1)。快指针每次移动两步,慢指针每次移动一步,如果两者相遇则表明链表有环。
&spm=1001.2101.3001.5002&articleId=79895620&d=1&t=3&u=d4f7525fb85e499cb8fd4eaae80396ac)
788

被折叠的 条评论
为什么被折叠?



