Floyd's Cycle Detection
νλ‘μ΄λμ μν κ°μ§ μκ³ λ¦¬μ¦: μ°κ²° 리μ€νΈ μνμ μ°Ύλ κ°μ₯ ν¨μ¨μ μΈ λ°©λ²
λ¬Έμ μν© λ° ν΄κ²° λ°©λ²
첫 λ²μ§Έ μ κ·Όλ²: λ
Έλ λ§νΉ
// κ° λ
Έλλ₯Ό λ°©λ¬Έν λ λ§νΉνλ λ°©λ²
public boolean hasCycle(ListNode head) {
Set<ListNode> visited = new HashSet<>();
while (head != null) {
if (visited.contains(head)) {
return true; // μ΄λ―Έ λ°©λ¬Έν λ
Έλ λ°κ²¬
}
visited.add(head);
head = head.next;
}
return false;
}νλ‘μ΄λ μκ³ λ¦¬μ¦
example. λ μ΄μ€ νΈλ
ꡬν λ° μ£Όμμ¬ν
β μλͺ»λ ꡬν
β
μ¬λ°λ₯Έ ꡬν
νμ©
1. μν μ‘΄μ¬ μ¬λΆ νμΈ
2. μν μμμ μ°ΎκΈ°
3. μνμ κΈΈμ΄ κ΅¬νκΈ°
μκ°/κ³΅κ° λ³΅μ‘λ
μκ° λ³΅μ‘λ: O(n)
κ³΅κ° λ³΅μ‘λ: O(1)
μμ©
1. κ° μ리 μ κ³± μμ ν©μ΄ 1μ΄ λκ±°λ μν
2. λ°°μ΄μμ μ€λ³΅ μ°ΎκΈ°: λ°°μ΄μ κ°μ μΈλ±μ€λ‘ μ¬μ©νμ¬ μν κ°μ§
κΈ°λ³Έ λ¬Έμ
μμ© λ¬Έμ
Last updated