[LeetCode] 206. Reverse Linked List

2021. 1. 13. 16:37Problem Solving/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

A linked list can be reversed either iteratively or recursively. Could you implement both?

내 풀이

이게 iteratively 풀이 일것이다.

# 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: ListNode) -> ListNode:
        cur = head
        prev, next = None, None

        while cur is not None:
            next = cur.next
            cur.next = prev
            prev = cur
            cur = next

        head = prev

        return head

이렇게 하면 prev는 계속 한칸씩 뒤로 가게된다.
그런데 파이썬에선 이걸 더 간단하게 표현 가능하다. 난 그래도 위 방식이 더 편하다 ㅜㅜ

# 파이썬의 다중 할당
next, cur.next = cur.next, prev
prev, cur = cur, next

이 파이썬의 다중할당(Multiple Assingment)를 이용해 간단하게 할 수 있는 이유는 파이썬이 이것을 내부적으로 처리해 주기 때문이다. 이에 대한 내용은 아래 레퍼런스에 '슭의 개발 블로그'에 잘 나와있다.

Reference

파이썬 알고리즘 인터뷰
국내도서
저자 : 박상길
출판 : 책만 2020.07.15
상세보기
반응형