LeetCode: Linked List Cycle



これは,与えられたLinkedListにループが存在するか否かの問題を探すものである.

問題を解く


順次探索するslowNodeとそれぞれ探索するfastNodeを発表した.
ループのないLinkedListの特徴は,探索の過程でいつかnextがnilになることである.
fastNodeとそのnextがnullであるかどうかをwhile文で確認します.
slowNodeとfastNodeが出会うとループが存在します.
import java.util.*;
public class Solution {
    public boolean hasCycle(ListNode head) {
        ListNode slowNode = head;
        ListNode fastNode = head;
        
        while(fastNode != null && fastNode.next != null) {
            slowNode = slowNode.next;
            fastNode = fastNode.next.next;
            
            if(slowNode == fastNode) {
                return true;
            }
        }
        return false;
    }
}