포스트

[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. 재귀적 접근
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 라이센스를 따릅니다.