双指针策略
通过控制双指针进行操作,一个指针的步长为1,另外一个指针的步长为2,
如果存在循环圈,步长为2的指针肯定会跟步长1的指针走到同一个node上面;
public class Solution {
public boolean hasCycle(ListNode head) {
ListNode node1 = head;
ListNode node2 = head;
do{
if(node1 == null || node2 == null){
return false;
}
node1 = node1.next;
node2 = node2.next;
if(node2 == null){
return false;
}
node2 = node2.next;
}while(node1 != node2);
return true;
}
}