- 문제 링크: https://leetcode.com/problems/reverse-linked-list/

- 난이도: Easy

 

기본적인 싱글 링크드리스트 문제. 리스트 방향을 거꾸로 만드는 문제다.

iterative/recursive 두가지 방법을 모두 써볼 수 있다.

 

(1) Iterative Solution

class Solution:
    def reverseList(self, head: Optional[ListNode]) -> Optional[ListNode]:
        prev, curr = None, head

        while curr:
            temp = curr.next
            curr.next = prev
            prev = curr
            curr = temp
        return prev

 

(2) Recursive Solution

class Solution:
    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
반응형