思路:快慢指针
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;
    }