File tree Expand file tree Collapse file tree 1 file changed +44
-0
lines changed Expand file tree Collapse file tree 1 file changed +44
-0
lines changed Original file line number Diff line number Diff line change 1+ # Definition for singly-linked list.
2+ # class ListNode:
3+ # def __init__(self, val=0, next=None):
4+ # self.val = val
5+ # self.next = next
6+
7+ """
8+ 1. Stack 활용 (LIFO)
9+ - LinkedList의 모든 원소를 Stack에 넣고 꺼냄
10+ TC: O(n) time
11+ SC: O(n) space
12+
13+ 2. 최적화 풀이
14+ - 현재 LinkedList를 거꾸로 뒤짚기
15+ TC: O(n) -> LinkedList를 딱 한 번 순회
16+ SC: O(1) -> 변수를 포인터 2개만 사용
17+ """
18+
19+ # Stack 풀이
20+ class Solution :
21+ def reverseList (self , head : Optional [ListNode ]) -> Optional [ListNode ]:
22+ stack = []
23+ node = head
24+ while node :
25+ stack .append (node )
26+ node = node .next
27+
28+ dummy = ListNode (- 1 )
29+ node = dummy
30+ while stack :
31+ node .next = stack .pop ()
32+ node = node .next
33+ node .next = None
34+ return dummy .next
35+
36+ # 최적화
37+ class Solution :
38+ def reverseList (self , head : Optional [ListNode ]) -> Optional [ListNode ]:
39+ prev , curr = None , head
40+ while curr :
41+ temp_next = curr .next
42+ curr .next = prev
43+ prev , curr = curr , temp_next
44+ return prev
You can’t perform that action at this time.
0 commit comments