m1ndy5's coding blog

LeetCode 206.Reverse Linked List with Python 본문

알고리즘 with python/알고리즘 스터디

LeetCode 206.Reverse Linked List with Python

정민됴 2024. 1. 6. 17:29

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

# 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

연결리스트를 거꾸로 뒤집는 문제다
이 때 현재 노드의 next에 이전에 저장해놨던 prev 노드를 연결하고 prev에 현재 노드를 저장한다.
이 후 다음 노드로 이동하면서 위와 같은 방법을 진행한다.
ex)
1 -> 2 -> 3 -> 4 -> 5
현재 노드: node : 1
이전 노드: prev : None
현재 노드에 이전 노드 연결: 1 -> None
이동(현재 노드가 이전 노드가 됨)prev : 1
현재 노드: node : 2
이전 노드: prev : 1
현재 노드에 이전 노드 연결: 2 -> 1 -> None
이동(현재 노드가 이전 노드가 됨)prev : 2
... 진행
그럼 뒤집힌다~~!