题目描述
判断给定的链表中是否有环。如果有环则返回true,否则返回false。

输入描述:
输入分为2段,第一段是入环前的链表部分,第二段是链表环的部分,后台会根据第二段是否为空将这两段组装成一个无环或者有环单链表
返回值描述:
返回链表的环的入口结点即可,我们后台程序会打印这个结点对应的结点值;若没有,则返回对应编程语言的空结点即可。
求解思路&实现代码
public class Solution {
public boolean hasCycle(ListNode head) {
//先判断链表为空的情况 fast-template
if (head == null)
return false;
//快慢双指针
ListNode fast = head;
ListNode slow = head;
//如果没环快指针会先到链表尾
while (fast != null && fast.next != null) {
//快指针移动两步
fast = fast.next.next;
//慢指针移动一步
slow = slow.next;
//相遇则有环
if (fast == slow)
return true;
}
//到末尾则没有环
return false;
}
}
该问题旨在判断单链表中是否存在环。通过使用快慢双指针的方法,如果快指针和慢指针相遇,则链表有环;若快指针到达链表尾部,说明无环。
467

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



