题目
解题
使用具有不同速度的两个快慢指针遍历链表,慢指针每次移动一步,快指针每次移动两步。如果链表中不存在环,最终快指针将最先到达尾部,此时返回false;如果存在环,最终快慢指针会相遇,此时返回 true。
public bool HasCycle(ListNode head) {
if(head==null||head.next==null)
{
return false;
}
ListNode slow=head;
ListNode fast=head.next;
while(slow!=fast)
{
if(fast==null||fast.next==null)
return false;
slow=slow.next;
fast=fast.next.next;
}
return true;