public class Solution {
public boolean hasCycle(ListNode head) {
// corner case, the linkedlist is null
if (head == null || head.next == null) {
return false;
}
ListNode slow = head;
ListNode fast = head;
// condition: when the fast pointer reach the end, or find the list has cycle.
while (fast != null && fast.next != null) {
slow = slow.next;
fast = fast.next.next;
if (slow == fast) {
return true;
}
}
return false;
}
}