描述
判断给定的链表中是否有环,如果有环则返回True,否则返回False
数据范围:链表长度\(0\le n\le 1000\), 链表中任意节点的值满足\(\mid val\mid \le 100000\)
输入分为两部分,第一部分为链表,第二部分代表是否有环,然后将组成的head头结点传入到函数里面。-1代表无环,其它的数字代表有环,这些参数解释仅仅是为了方便读者自测调试。实际在编程时读入的是链表的头节点。
解法思路:利用快慢指针,快指针前进2步,慢指针前进1步,如果有环,总能相遇,如果没环,则快指针会先行到达链表的尾部变为None
代码:
class Solution:
def hasCycle(self , head: ListNode) -> bool:
p1 = p2 = head
while p2 and p2.next:
p1 = p1.next
p2 = p2.next.next
if p1 == p2:
return True
return False
标签:p2,判断,next,链表,p1,有环,指针
From: https://www.cnblogs.com/bonne-chance/p/18083388