Skip to content

Commit 6d0c7f4

Browse files
committed
feat: cycle문제풀이
1 parent b984bc3 commit 6d0c7f4

File tree

1 file changed

+44
-0
lines changed

1 file changed

+44
-0
lines changed

linked-list-cycle/youngduck.js

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
/**
2+
* Definition for singly-linked list.
3+
* function ListNode(val) {
4+
* this.val = val;
5+
* this.next = null;
6+
* }
7+
*/
8+
9+
/**
10+
* @param {ListNode} head
11+
* @return {boolean}
12+
*/
13+
var hasCycle = function (head) {
14+
// 순환탐지 기법
15+
// 1. 플로이드 토끼와 거북이 (포인터2개)
16+
// 2. 집합을 통한 중복검사
17+
18+
////////풀이///////
19+
20+
// 노드 0개 1개면 순환불가
21+
22+
if (!head || !head.next) {
23+
return false;
24+
}
25+
26+
// 토끼, 거북이 설정
27+
let slow = head;
28+
let fast = head.next;
29+
30+
while (slow !== fast) {
31+
// 두칸전진시 노드 존재 체크
32+
if (!fast || !fast.next) {
33+
return false;
34+
}
35+
36+
slow = slow.next;
37+
fast = fast.next.next;
38+
}
39+
40+
return true;
41+
};
42+
43+
// 시간복잡도 O(n) -> 최대 리스트의 노드 수 만큼 while문이 반복되므로
44+
// 공간복잡도 O(1) -> 토끼, 거북이 포인터 2개만 사용하므로

0 commit comments

Comments
 (0)