[LeetCode] 206. Reverse Linked List
2021. 1. 13. 16:37ㆍProblem Solving/LeetCode
https://leetcode.com/problems/reverse-linked-list/
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
- 슭의 개발 블로그
- Eiile kim님의 블로그
- 파이썬 알고리즘 인터뷰 책
|
반응형
'Problem Solving > LeetCode' 카테고리의 다른 글
[LeeCode] 24. Swap Nodes in Pairs (0) | 2021.01.14 |
---|---|
[LeetCode] 2. Add Two Numbers (0) | 2021.01.14 |
[LeetCode] 234. Palindrome Linked List (0) | 2021.01.12 |
[LeetCode] 121. Best Time to Buy and Sell Stock (0) | 2021.01.11 |
[LeetCode] 238. Product of Array Except Self (0) | 2021.01.10 |