연결리스트를 뒤집어라
# Definition for singly-linked list.
class ListNode:
def __init__(self, x):
self.val = x
self.next = None
class Solution:
def reverseList(self, head: ListNode) -> ListNode:
def reverse(node: ListNode, prev: ListNode = None):
if not node:
return prev
next, node.next = node.next, prev
return reverse(next, node)
return reverse(head)
다음 노트 next와 현재 노드를 계속해서 재귀 호출하면서 node가 none이 될때 까지 반복하면서 마지막에는 연결리스트가 거꾸로 연결된다.
# Definition for singly-linked list.
class ListNode:
def __init__(self, x):
self.val = x
self.next = None
class Solution:
def reverseList(self, head: ListNode) -> ListNode:
node, prev = head, None
while node:
next, node.next = node.next, prev
prev, node = node, next
return prev
1번과 똑같이 next.node를 prev리스트로 계속 연결하면서 끝날 때 까지 반복한다.
둘다 시간은 크게 차이가 나지 않지만 메모리를 반복 구조로 뒤집는 것이 조금이나마 적게 먹는 것 같다.