LeetCode: Linked List Cycle

이원희·2020년 12월 1일
0

📝 PS

목록 보기
14/65
post-thumbnail

주어진 LinkedList에서 순환이 있는지 찾는 문제였다.

문제풀이

하나씩 순차적으로 탐색하는 slowNode와 두개씩 탐색하는 fastNode를 선언했다.
순환이 없는 LinkedList의 특징은 탐색을 하다보면 언젠가 next가 nil이 된다.
while문으로 fastNode와 그 next가 null인지 체크한다.
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;
    }
}

0개의 댓글