image.png

解决思路

快慢指针

定义快慢指针,一个走一步,一个走两步,如果快的可以追上慢的,则有环
如果快的到达了末尾都没追上慢的,则不存在环
image.png

  1. public class Solution {
  2. public boolean hasCycle(ListNode head) {
  3. if(head==null||head.next==null)
  4. return false;
  5. ListNode slow = head;
  6. ListNode fast = head.next;
  7. while(slow!=fast){
  8. if(fast==null||fast.next==null)
  9. return false;
  10. slow = slow.next;
  11. fast = fast.next.next;
  12. }
  13. return true;
  14. }
  15. }