44- -10^5 <= Node.val <= 10^5
55- pos is -1 or a valid index in the linked-list
66
7- Time Complexity:
8- - Solution 1: O(n)
9- - Solution 2: O(n)
10-
11- Space Complexity:
12- - Solution 1: O(n) - visited set์ ๋ชจ๋ ๋
ธ๋๋ฅผ ์ ์ฅํ ์ ์์
13- - Solution 2: O(1) - ์ถ๊ฐ ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉํ์ง ์์
14-
15- ํ์ด๋ฐฉ๋ฒ:
16- 1. ์ฒ์์ ์ง๊ด์ ์ธ ๋ฐฉ๋ฒ์ผ๋ก ํด๊ฒฐ, ํ ๋ฒ ๋ง์ฃผ์น ๋
ธ๋๋ฅผ ๋ค์ ๋ง๋๋์ง๋ฅผ ์ฒดํฌํ๋ ๋ฐฉ์
17- 2. slow, fast ๋ ๊ฐ์ ๋
ธ๋๋ฅผ ํ์ฉ, ๋ง์ฝ cycle์ด ์กด์ฌํ๋ ๊ฒฝ์ฐ fast๊ฐ slow์ ์ธ์ ๊ฐ ๋ง๋๊ฒ ๋จ,
18- ๋ง์ฝ cycle์ด ์๋ค๋ฉด ๋์ ๋ง๋์ง ์์
19- """
207
8+ <Solution 1>
9+
10+ Time Complexity: O(n)
11+ - while ๋ฃจํ๋ฅผ ์ต๋ n๋ฒ ์คํ (๋
ธ๋์ ๊ฐ์๋งํผ)
12+
13+ Space Complexity: O(n)
14+ - visited set์ ์ต๋ n๊ฐ์ ๋
ธ๋ ์ ์ฅํจ
15+ - set() ์กฐํ/์ฝ์
์ O(1)
16+
17+ ํ์ด ๋ฐฉ๋ฒ:
18+ - ํ ๋ฒ ๋ง์ฃผ์น ๋
ธ๋๋ฅผ ๋ค์ ๋ง๋๋์ง๋ฅผ ์ฒดํฌํ๋ ๋ฐฉ์
19+ """
2120# Definition for singly-linked list.
2221# class ListNode:
2322# def __init__(self, x):
2423# self.val = x
2524# self.next = None
26-
27- # Solution 1: ํ ๋ฒ ๋ง์ฃผ์น ๋
ธ๋๋ฅผ ๋ค์ ๋ง๋๋์ง๋ฅผ ์ฒดํฌ
2825class Solution :
2926 def hasCycle (self , head : Optional [ListNode ]) -> bool :
3027 visited = set ()
@@ -38,14 +35,26 @@ def hasCycle(self, head: Optional[ListNode]) -> bool:
3835
3936 return False
4037
41- # Solution 2: ๋ ๊ฐ์ ํฌ์ธํฐ ์ด์ฉ
38+ """
39+ <Solution 2>
40+
41+ Time Complexity: O(n)
42+ - while ๋ฃจํ๋ฅผ ์ต๋ n๋ฒ ์คํ (๋
ธ๋์ ๊ฐ์๋งํผ)
43+
44+ Space Complexity: O(1)
45+ - ํฌ ํฌ์ธํฐ ์ด์ธ์ ์ถ๊ฐ ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉํ์ง ์์
46+
47+ ํ์ด ๋ฐฉ๋ฒ:
48+ - ํฌ ํฌ์ธํฐ ๋ฐฉ์ (slow, fast)
49+ - ๋ง์ฝ cycle์ด ์๋ค๋ฉด, fast๊ฐ slow์ ์ธ์ ๊ฐ ๋ง๋๊ฒ ๋จ
50+ - cycle์ด ์๋ค๋ฉด ๋์ ๋ง๋์ง ์์
51+ """
4252class Solution :
4353 def hasCycle (self , head : Optional [ListNode ]) -> bool :
4454 if not head :
4555 return False
4656
47- slow = head
48- fast = head
57+ slow = fast = head
4958
5059 while fast and fast .next :
5160 slow = slow .next
@@ -55,4 +64,3 @@ def hasCycle(self, head: Optional[ListNode]) -> bool:
5564 return True
5665
5766 return False
58-
0 commit comments