Given a linked list, determine if it has a cycle in it.
Follow up:
Can you solve it without using extra space?
public class LinkedListCycle
{
//节点数据结构
static class ListNode
{
int val;
ListNode next;
ListNode(int x) {
val = x;
next = null;
}
}
public static boolean detectCycle(ListNode head)
{
if(null == head)
{
return null;
}
//快慢指针
ListNode _slow = head;
ListNode _fast = head;
while(null != _fast.next && null != _fast.next.next)
{
_slow = _slow.next;
_fast = _fast.next.next;
//快慢指针相遇,说明有环
if(_slow == _fast)
{
return true;
}
}
return false;
}
}
本文介绍了一种使用快慢指针的方法来判断链表中是否存在循环。这种方法不需要额外的空间,通过两个速度不同的指针遍历链表,如果存在循环则两指针最终会相遇。
261

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



