[Leetcode] Reversed Linked List
206. Reverse Linked List Easy Topics [
](#) Companies Given the head of a singly linked list, reverse the list, and return the reversed list.
Example 1:
Input: head = [1,2,3,4,5] Output: [5,4,3,2,1] Example 2:
- The number of nodes in the list is the range [0, 5000].
- -5000
- 반복적 접근
1
2
3
4
5
6
7
8
9
10
11
def reverseList(self, head: Optional[ListNode]) -> Optional[ListNode]:
prev = None
current = head
while current:
next_temp = current.next # 다음 노드 저장
current.next = prev # 포인터 뒤집기
prev = current # prev 이동
current = next_temp # current 이동
return prev # 새로운 헤드
- 재귀적 접근
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
def reverseList(self, head: Optional[ListNode]) -> Optional[ListNode]:
if not head or not head.next:
return head
new_head = self.reverseList(head.next)
head.next.next = head
head.next = None
return new_head
'''
## 동작 과정 (반복 방법)
초기: None ← prev current → [1] → [2] → [3] → None
1단계: None ← [1] prev current → [2] → [3] → None
2단계: None ← [1] ← [2] prev current → [3] → None
3단계: None ← [1] ← [2] ← [3] prev current(None)
'''
#linkedList, #연결리스트, #leetcode, #reversedLinkedList, #역방향연결리스트
이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.