概括

  1. 需要额外定义 slow 和 fast 两个变量
  2. 使用 slow 和 fast 两个快慢指针进行遍历
  3. 追击原理:快指针能追上慢指针说明链表有环
  • 快:4 -> 2 -> 4
  • 慢:3 -> 7 -> 4

未命名绘图.drawio.svg

实现

  1. public boolean isRing(Node head) {
  2. Node nn1 = head;
  3. Node nn2 = head;
  4. while (nn1 != null && nn2.next != null) {
  5. nn1 = nn1.next;
  6. nn2 = nn2.next.next;
  7. if (nn1 == nn2) {
  8. return true;
  9. }
  10. }
  11. return false;
  12. }