|
7 | 7 | - ๋ฆฌ์คํธ๋ฅผ ํ ๋ฒ์ฉ ์ํํ๋ฉด์ ์๊ณ ๋ฆฌ์ฆ์ ๊ฐ ๋จ๊ณ๋ฅผ ์ํํจ
|
8 | 8 |
|
9 | 9 | Space Complexity: O(1)
|
10 |
| -- ์ ํด์ง ๊ฐ์์ ๋ณ์ ์ธ์๋ ์ถ๊ฐ ๊ณต๊ฐ์ ์ฌ์ฉํ์ง ์์ |
| 10 | +- ์ ํด์ง ๋ณ์ ์ธ์๋ ์ถ๊ฐ ๊ณต๊ฐ์ ์ฌ์ฉํ์ง ์์ |
11 | 11 |
|
12 | 12 | ํ์ด๋ฐฉ๋ฒ:
|
13 | 13 | 1. ์ค๊ฐ ์ง์ ์ฐพ๊ธฐ
|
14 |
| - - slow/fast ํฌ์ธํฐ๋ฅผ ์ฌ์ฉํ์ฌ ์ค๊ฐ ์ง์ ์ฐพ๊ธฐ |
| 14 | +- slow/fast ํฌ์ธํฐ๋ฅผ ์ฌ์ฉํ์ฌ ์ค๊ฐ ์ง์ ์ฐพ๊ธฐ |
15 | 15 | 2. ๋ท๋ถ๋ถ ๋ค์ง๊ธฐ
|
16 |
| - - prev, curr ํฌ์ธํฐ๋ก ๋งํฌ๋ ๋ฆฌ์คํธ์ ๋ฐฉํฅ ์ ํ |
17 |
| - - next_temp์ ๋ค์ ๋
ธ๋๋ฅผ ์ ์ฅํ ํ ๋ฐฉํฅ ๋ณ๊ฒฝ |
| 16 | +- prev, curr ํฌ์ธํฐ๋ก ๋งํฌ๋ ๋ฆฌ์คํธ์ ๋ฐฉํฅ ์ ํ |
| 17 | +- next_temp์ ๋ค์ ๋
ธ๋๋ฅผ ์ ์ฅํ ํ ๋ฐฉํฅ ๋ณ๊ฒฝ |
18 | 18 | 3. ์๋ถ๋ถ๊ณผ ๋ท๋ถ๋ถ ํฉ์น๊ธฐ
|
19 |
| - - ๋ ๋ฆฌ์คํธ์ ์์์ (first, second)๋ถํฐ ์์ |
20 |
| - - temp1, temp2์ ๋ค์ ๋
ธ๋ ์ ์ฅ |
21 |
| - - ํฌ์ธํฐ๋ค์ ๋ฒ๊ฐ์๊ฐ๋ฉฐ ์ฐ๊ฒฐํจ |
| 19 | +- ๋ ๋ฆฌ์คํธ์ ์์์ (first, second)๋ถํฐ ์์ |
| 20 | +- temp1, temp2์ ๋ค์ ๋
ธ๋ ์ ์ฅ |
| 21 | +- ํฌ์ธํฐ๋ค์ ๋ฒ๊ฐ์๊ฐ๋ฉฐ ์ฐ๊ฒฐํจ |
| 22 | +
|
| 23 | +๋
ธํธ: |
| 24 | +- ํฌ์ธํฐ ์กฐ์(์ฐ๊ฒฐ๋ฆฌ์คํธ ๋ค์ง๊ธฐ, ๋ณํฉ) ๋ฐฉ๋ฒ์ ๋ค ๊น๋จน์ด์ ๋ณต์ต์ฉ ์์ ์ฃผ์์ ์ถ๊ฐํด๋ |
22 | 25 | """
|
23 | 26 | # Definition for singly-linked list.
|
24 | 27 | # class ListNode:
|
|
27 | 30 | # self.next = next
|
28 | 31 | class Solution:
|
29 | 32 | def reorderList(self, head: Optional[ListNode]) -> None:
|
30 |
| - """ |
31 |
| - Do not return anything, modify head in-place instead. |
32 |
| - """ |
33 |
| - # ์ค๊ฐ ์ง์ ์ฐพ๊ธฐ |
34 |
| - slow = head |
35 |
| - fast = head |
| 33 | + # ์ด๊ธฐ ์ํ: 1->2->3->4->5 |
| 34 | + |
| 35 | + # 1๋จ๊ณ: ์ค๊ฐ ์ง์ ์ฐพ๊ธฐ |
| 36 | + slow = head # slow = 1 |
| 37 | + fast = head # fast = 1 |
36 | 38 | while fast and fast.next:
|
37 |
| - slow = slow.next |
38 |
| - fast = fast.next.next |
39 |
| - |
40 |
| - # ๋ท๋ถ๋ถ ๋ค์ง๊ธฐ |
41 |
| - prev = None |
42 |
| - curr = slow.next |
43 |
| - slow.next = None |
| 39 | + slow = slow.next # slow: 1->2->3 |
| 40 | + fast = fast.next.next # fast: 1->3->5->None |
| 41 | + # ๊ฒฐ๊ณผ: slow๋ 3์ ์์น |
| 42 | + |
| 43 | + # 2๋จ๊ณ: ๋ท๋ถ๋ถ ๋ค์ง๊ธฐ |
| 44 | + prev = None # prev = None |
| 45 | + curr = slow.next # curr = 4 (๋ท๋ถ๋ถ ์์์ ) |
| 46 | + slow.next = None # ๋ถ๋ฆฌ: 1->2->3 | 4->5 |
| 47 | + |
44 | 48 | while curr:
|
45 |
| - next_temp = curr.next |
46 |
| - curr.next = prev |
47 |
| - prev = curr |
48 |
| - curr = next_temp |
| 49 | + # 1ํ์ : curr=4, prev=None |
| 50 | + next_temp = curr.next # next_temp = 5 |
| 51 | + curr.next = prev # 4->None |
| 52 | + prev = curr # prev = 4 |
| 53 | + curr = next_temp # curr = 5 |
| 54 | + # ์ํ: 1->2->3 | 4->None, curr=5 |
49 | 55 |
|
50 |
| - # ์๋ถ๋ถ๊ณผ ๋ท๋ถ๋ถ ํฉ์น๊ธฐ |
51 |
| - first = head |
52 |
| - second = prev |
| 56 | + # 2ํ์ : curr=5, prev=4 |
| 57 | + next_temp = curr.next # next_temp = None |
| 58 | + curr.next = prev # 5->4 |
| 59 | + prev = curr # prev = 5 |
| 60 | + curr = next_temp # curr = None (์ข
๋ฃ) |
| 61 | + # ์ํ: 1->2->3 | 5->4->None |
| 62 | + |
| 63 | + # 3๋จ๊ณ: ์๋ถ๋ถ๊ณผ ๋ท๋ถ๋ถ ํฉ์น๊ธฐ |
| 64 | + first = head # first = 1->2->3 |
| 65 | + second = prev # second = 5->4 |
| 66 | + |
53 | 67 | while second:
|
54 |
| - temp1 = first.next |
55 |
| - temp2 = second.next |
| 68 | + # 1ํ์ : first=1, second=5 |
| 69 | + temp1 = first.next # temp1 = 2 |
| 70 | + temp2 = second.next # temp2 = 4 |
56 | 71 |
|
57 |
| - first.next = second |
58 |
| - second.next = temp1 |
| 72 | + first.next = second # 1->5 |
| 73 | + second.next = temp1 # 5->2 |
| 74 | + # ํ์ฌ ์ํ: 1->5->2->3, ๋จ์ second = 4 |
59 | 75 |
|
60 |
| - first = temp1 |
61 |
| - second = temp2 |
62 |
| - |
63 |
| - |
| 76 | + first = temp1 # first = 2 |
| 77 | + second = temp2 # second = 4 |
| 78 | + |
| 79 | + # 2ํ์ : first=2, second=4 |
| 80 | + temp1 = first.next # temp1 = 3 |
| 81 | + temp2 = second.next # temp2 = None |
| 82 | + |
| 83 | + first.next = second # 2->4 |
| 84 | + second.next = temp1 # 4->3 |
| 85 | + # ํ์ฌ ์ํ: 1->5->2->4->3 |
| 86 | + |
| 87 | + first = temp1 # first = 3 |
| 88 | + second = temp2 # second = None (์ข
๋ฃ) |
| 89 | + |
| 90 | + # ์ต์ข
๊ฒฐ๊ณผ: 1->5->2->4->3 |
0 commit comments