LeetCode > 206. Reverse Linked List

Doyeon Kim·2022년 3월 28일

코딩테스트 공부

목록 보기
44/171

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


연결 리스트(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
            

node.next를 이전 prev 리스트로 계속 연결하면 뒤집어진 연결 리스트를 얻을 수 있다.

초기화
node = 1->2->3->4->5->None
prev = None

while [1]
next = 2(->3->4->5->None)
node = 1 -> None
prev = 1 -> None
node = 2(->3->4->5->None)

while [2]
next = 3(->4->5->None)
node = 2->1->None
prev = 2->1->None
node = 3(->4->5->None)

while [3]
next = 4(->5->None)
node = 3->2->1->None
prev = 3->2->1->None
node = 4(->5->None)

while [4]
next = 5(->None)
node = 4->3->2->1->None
prev = 4->3->2->1->None
node = 5(->None)

while [5]
next = None
node = 5->4->3->2->1->None
prev = 5->4->3->2->1->None
node = None

profile
성장하고 도전하는 개발자. 프로그래밍 좋아하세요?

0개의 댓글