본문 바로가기

Algorithm/파이썬 알고리즘 인터뷰 스터디

[연결리스트] 15 역순 연결 리스트(Reverse Linked List)

<LeetCode 문제>

https://leetcode.com/problems/reverse-linked-list/

 

Reverse Linked List - LeetCode

Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview.

leetcode.com

연결 리스트를 뒤집는 문제입니다.

<풀이>

반복 구조를 통해 연결리스트를 뒤집으면 다음과 같습니다.

# Definition for singly-linked list.
# class ListNode:
#     def __init__(self, val=0, next=None):
#         self.val = val
#         self.next = next
class Solution:
    def reverseList(self, head: Optional[ListNode]) -> Optional[ListNode]:
        node, prev = head, None
        
        while node:
            next,node.next = node.next, prev
            prev, node = node, next
        
        return prev

 

반복 구조가 아닌 재귀 구조로 연결 리스트를 뒤집으면 다음과 같습니다.

# Definition for singly-linked list.
# class ListNode:
#     def __init__(self, val=0, next=None):
#         self.val = val
#         self.next = next
class Solution:
    def reverseList(self, head: Optional[ListNode]) -> Optional[ListNode]:
        def reverse(node: ListNode, prev: ListNode = None):
            if not node:
                return prev
            next,node.next = node.next, prev
            return reverse(next,node)
        
        return reverse(head)

 

<학습내용>

1.

<학습이 필요한 내용>

1.