思路:快慢指针
1.设置两个指针,一个一次走一步,一个一次走两步。
1)如果有环,最终两个指针会相遇。
2)若有指针提前到达了链表末尾,即=null,则无环。
public boolean hasCycle(ListNode head) { if(head==null){ return false; } ListNode p1=head;//慢指针 ListNode p2=head.next;//快指针 while(p1!=null && p2!=null){ if(p1==p2){ return true; } p1=p1.next; if(p2.next==null){//需要判断一下,否则会空指针异常。 return false; } p2=p2.next.next; } return false; }