[leetcode / 206] Reverse Linked List
in Problem Solving on leetcode
날짜: 2021년 8월 25일
카테고리: 연결 리스트
태그: Easy
, 206
, 파이썬
leetcode 206 - Reverse Linked List
입출력 예시
예제 입력 | 예제 출력 |
---|---|
head = [1,2,3,4,5] | [5,4,3,2,1] |
head = [1,2] | [2,1] |
head = [] | [] |
코드
# 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]:
prev = None
while head:
curr= head
head = head.next
curr.next = prev
prev = curr
return prev
풀이 과정
가장 먼저 prev
에 None을 저장
- 현재 노드를 가리키는 역할을 하는
curr
에head
정보를 저장하고 head
에는 다음에 올 노드 정보를 저장 (원래의 순서대로)curr
의 다음에 올 노드 정보에prev
를 넣어 역순으로 방향을 변환prev
에는 현재curr
의 정보를 저장
위의 절차를 head
가 None이 될 때까지 반복하여 포인터의 방향이 역순으로 변환 된 연결 리스트 prev
를 반환
반성
- 연결 리스트에 대해 완전히 이해하고 있다고 생각했는데, 막상 연결리스트를 활용한 알고리즘 문제를 풀어보니 이해도가 낮아 버벅임이 있었다. 모든 이론적인 부분에 대한 이해만 하고 있는 상황에서 완전하게 내 것으로 만들 필요가 있다.