파이썬 알고리즘 인터뷰 문제 15번(리트코드 206번) Reverse Linked List
https://leetcode.com/problems/reverse-linked-list/
# 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]:
if not head:
return
prev = head
curr = prev.next
prev.next = None #처음에 이걸 안해서 루프 생김.
while curr:
nxt = curr.next
curr.next = prev
prev = curr
curr = nxt
return prev
# 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, curr = None, head
while curr:
prev, curr.next, curr = curr, prev, curr.next
return prev
# 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]:
def reverse(node, prev = None):
if not node:
return prev
node.next, nxt = prev, node.next
return reverse(nxt, node)
return reverse(head, None)
return값이 그냥 쭉 전달되는 형태라서 그런가? 두 번 보니 좀 알겠다.