문제/릿코드

[릿코드/LeetCode] 206. Reverse Linked List (파이썬3/Python3)

개 살구 2021. 7. 18. 18:45

문제

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


생각

우리가 얻을 수 있는 값을 순서대로 작성하면, 1, 2, 3, 4, 5, None. 이 순서로 값이 들어올 것이다. 

그렇다면 이를 활용하여 1, 2-1, 3-2-1, 4-3-2-1, 5-4-3-2-1. 이렇게 만들면 될 것 같다!

출력은 이제 None이 들어오게되면 출력하면 될 듯?

 

새 리스트를 만들지 않고도 가능했었던 것 같은데 파이썬이라 헷갈린다...


코드

# 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:
        def newList(Node, pre: ListNode = None):
            if not Node:
                return pre
            Node.next, next = pre, Node.next
            return newList(next, Node)
        return newList(head)