题目:给定一个链表,判断链表中是否有环
分析过程:
1)定义两个变量fast、slow都指向第一个节点
2) fast每次走两步,slow每次走一步
3)如果fast和slow相遇,说明有环,否则说明无环
注:
1)当fast为null 时,该链表一定无环
2)fast=fast.next.next 此处要判断fast.next!=null,否则会出现空指针异常
public boolean hasCycle(ListNode head) {
ListNode fast=head;
ListNode slow=head;
while(fast!=null&&fast.next!=null){ //当fast为null时,一定无环
fast=fast.next.next; //fast走两步
slow=slow.next; //slow走一步
if(fast==slow){
return true; //如果相遇,说明有环
}
}
return false;
}