Skip to content

Commit 0720200

Browse files
linked list cycle solution
1 parent 1e53764 commit 0720200

File tree

1 file changed

+46
-0
lines changed

1 file changed

+46
-0
lines changed

โ€Žlinked-list-cycle/jaejeong1.java

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
//Definition for singly-linked list.
2+
class ListNode {
3+
int val;
4+
ListNode next;
5+
ListNode(int x) {
6+
val = x;
7+
next = null;
8+
}
9+
}
10+
11+
class Solution {
12+
public boolean hasCycle(ListNode head) {
13+
// ํ’€์ด 1: Set์— ๊ฐ์ฒด๋ฅผ ์ง‘์–ด ๋„ฃ๊ณ , ์‚ฌ์ด์ฆˆ๊ฐ€ ์•ˆ๋Š˜์–ด๋‚˜๋ฉด ์‚ฌ์ดํด์ด ์žˆ๋‹ค๊ณ  ํŒ๋‹จํ•  ์ˆ˜ ์žˆ๋‹ค
14+
// TC: O(N)
15+
// SC: O(N)
16+
// Set<ListNode> set = new HashSet<>();
17+
//
18+
// while(head != null) {
19+
// var before = set.size();
20+
// set.add(head);
21+
// var after = set.size();
22+
// if (before == after) {
23+
// return true;
24+
// }
25+
// head = head.next;
26+
// }
27+
//
28+
// return false;
29+
30+
// ํ’€์ด 2: ๋‘๊ฐœ์˜ ํฌ์ธํ„ฐ๋ฅผ ์‚ฌ์šฉํ•ด ์ฒซ๋ฒˆ์งธ ํฌ์ธํ„ฐ๋Š” ํ•˜๋‚˜์”ฉ, ๋‘๋ฒˆ์งธ ํฌ์ธํ„ฐ๋Š” ๋‘๊ฐœ์”ฉ ์ˆœํ™˜ํ•˜๋‹ค ๊ฒน์น˜๋Š” ๋ถ€๋ถ„์ด ์ƒ๊ธฐ๋ฉด ์ˆœํ™˜์ด๋ผ๊ณ  ํŒ๋‹จํ•  ์ˆ˜ ์žˆ๋‹ค
31+
// TC: O(N)
32+
// SC: O(1)
33+
var slow = head;
34+
var fast = head;
35+
while (fast != null && fast.next != null) {
36+
slow = slow.next;
37+
fast = fast.next.next;
38+
39+
if (slow == fast) {
40+
return true;
41+
}
42+
}
43+
44+
return false;
45+
}
46+
}

0 commit comments

Comments
ย (0)