|
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