Адрес: https://leetcode.cn/problems/linked-list-cycle/
Идея решения этого вопроса в основном заключается в использовании быстрых и медленных указателей, быстрый указатель делает два шага за раз, а медленный указатель два шага за раз.
public class 环形链表_非递归 {
class ListNode {
int val;
ListNode next;
ListNode(int x) {
val = x;
next = null;
}
public boolean hasCycle(ListNode head) {
if (head ==null || head.next==null) return false;
ListNode slow = head;
ListNode fast = head.next;
//进行循环
while (fast !=null && fast.next !=null){
//如果快慢指针重合 那么结束循环,重合就代表有环
if (slow == fast) return true;
slow = slow.next;
fast = fast.next.next;
}
return false;
}
}
}