본 내용은 <파이썬 알고리즘 인터뷰>를 참고했습니다.
재귀 구조로 뒤집기
# 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 reverse(node: ListNode, prev: ListNode = None):
if not node:
return prev
next, node.next = node.next, prev
return reverse(next, node)
return reverse(head)
이 문제에서 배워야 할 포인트
- 반복 구조에서 'prev, node = node, next' 부분을 재귀 함수 'return reverse(next, node)'로 대체
- return reverse(head)로 시작하므로, prev의 초깃값을 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:
node, prev = head, None
while node:
next, node.next = node.next, prev
prev, node = node, next
return prev
이 문제에서 배워야 할 포인트
- 'next, node.next = node.next, prev', 'prev, node = node, next'
- 연쇄구조
- node.next, node를 주목
- node, prev 변수를 먼저 정의하고 시작
- node는 포인터 역할
'프로그래머 > Python' 카테고리의 다른 글
[Python] Leet Code 206. Reverse Linked List (0) | 2021.03.18 |
---|---|
[Python] Leet Code 21. Merge Two Sorted Lists (0) | 2021.03.08 |
[Python] Leet Code 234. Palindrome Linked List (0) | 2021.03.08 |
[Python] Leet Code 121. Best Time to Buy and Sell Stock (0) | 2021.03.06 |
[Python] Leet Code 238. Product of Array Except Self (0) | 2021.03.06 |