Skip to content

Latest commit

 

History

History
38 lines (27 loc) · 934 Bytes

File metadata and controls

38 lines (27 loc) · 934 Bytes

Linked List

Table of contents

Floyd’s Cycle Detection Algorithm

  • Purpose: Detect if a linked list contains a cycle (loop) using two pointers — a slow one and a fast one.

  • Working:

    • slow moves one node at a time.
    • fast moves two nodes at a time.
    • If there’s a cycle, both pointers will meet at some node inside the cycle.
    • If there's no cycle, fast will reach the end (null).
  • Logic

public boolean hasCycle(ListNode head) {
        ListNode slow_p = head, fast_p = head;
        while(fast_p != null && fast_p.next != null) {
            slow_p = slow_p.next;
            fast_p = fast_p.next.next;
            if(slow_p == fast_p)return true;
        }
        return false;
    }

(back to top)