目录
问题描述
给你一个链表的头节点 head
,判断链表中是否有环。
如果链表中有某个节点,可以通过连续跟踪 next
指针再次到达,则链表中存在环。 为了表示给定链表中的环,评测系统内部使用整数 pos
来表示链表尾连接到链表中的位置(索引从 0 开始)。注意:pos
不作为参数进行传递 。仅仅是为了标识链表的实际情况。
如果链表中存在环 ,则返回 true
。 否则,返回 false
。
示例 1:
输入:head = [3,2,0,-4], pos = 1 输出:true 解释:链表中有一个环,其尾部连接到第二个节点。
示例 2:
输入:head = [1,2], pos = 0 输出:true 解释:链表中有一个环,其尾部连接到第一个节点。
示例 3:
输入:head = [1], pos = -1 输出:false 解释:链表中没有环。
解题过程
使用快慢指针判断,第一次错误:
原因,忽略了p1和p2都指向空的情况,修改如下:
第二次出错,解答错误:
错误原因:p2和p1指向同一个位置了啊,肯定不对,无语
修改:
又显示超出时间限制了
直接看解析改出来了,自己搞得太复杂
结果:
前面一直卡在p2.next为None的情况下,None.next出错,是不支持的,后面while循环前对p2.next进行判断,如果为None,其实也就代表没有环了,可以直接返回False。