File tree Expand file tree Collapse file tree 1 file changed +45
-0
lines changed Expand file tree Collapse file tree 1 file changed +45
-0
lines changed Original file line number Diff line number Diff line change
1
+ from typing import Optional
2
+
3
+
4
+ # Definition for singly-linked list.
5
+ class ListNode :
6
+ def __init__ (self , val = 0 , next = None ):
7
+ self .val = val
8
+ self .next = next
9
+
10
+
11
+ class Solution :
12
+ def reorderList (self , head : Optional [ListNode ]) -> None :
13
+ """
14
+ - Idea:
15
+ ์ฐ๊ฒฐ ๋ฆฌ์คํธ๋ฅผ ๋ฐ์ผ๋ก ๋๋๊ณ , ๋ค์ชฝ(๋๋ฒ์งธ ๋ฆฌ์คํธ)์ ์ฐ๊ฒฐ ๋ฐฉํฅ์ ๋ฐ๋๋ก ๋ค์ง๋๋ค.
16
+ ์ฒซ๋ฒ์งธ ๋ฆฌ์คํธ์ ๋๋ฒ์งธ ๋ฆฌ์คํธ์ ๋
ธ๋๋ฅผ ๋ฒ๊ฐ์๊ฐ๋ฉฐ ์ฐ๊ฒฐํ๋ค.
17
+ - Time Complexity: O(n). n์ ์ ์ฒด ๋
ธ๋์ ์
18
+ ๋ฆฌ์คํธ๋ฅผ ํ์ํ๊ณ ๋ณํฉํ๋ ๋ฐ ๊ฑธ๋ฆฌ๋ ์๊ฐ์ ๋น๋กํ๋ค.
19
+ - Space Complexity: O(1)
20
+ ๋ช ๊ฐ์ ํฌ์ธํฐ๋ฅผ ์ฌ์ฉํ๋ ์์ ๊ณต๊ฐ๋ง ์ฐจ์งํ๋ค.
21
+ """
22
+ slow , fast = head , head
23
+
24
+ while fast and fast .next :
25
+ slow = slow .next
26
+ fast = fast .next .next
27
+
28
+ mid = slow .next
29
+ slow .next = None
30
+
31
+ prev , cur = None , mid
32
+
33
+ while cur :
34
+ next_temp = cur .next
35
+ cur .next = prev
36
+ prev = cur
37
+ cur = next_temp
38
+
39
+ first , second = head , prev
40
+
41
+ while second :
42
+ first_next , second_next = first .next , second .next
43
+ first .next = second
44
+ second .next = first_next
45
+ first , second = first_next , second_next
You canโt perform that action at this time.
0 commit comments