双步长
循环必相遇
后面还有一个寻找环的入口
当两个相遇时 把一个指针放回头结点,两个指针都每次走一步
相遇时即为环入口
/** * Definition for singly-linked list. * class ListNode { * int val; * ListNode next; * ListNode(int x) { * val = x; * next = null; * } * } */ public class Solution { public boolean hasCycle(ListNode head) { if (head == null){ return false; } ListNode fast = head; ListNode slow = head; while(fast!=null && fast.next!=null){ slow = slow.next; fast = fast.next.next; if(fast == slow){ return true; } } return false; } }