206. Reverse Linked List
Easy
파이썬 알고리즘 인터뷰 219p
Given the head of a singly linked list, reverse the list, and return the reversed list.
♬idea
- iteratively
- recursively
1. 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: Optional[ListNode]) -> Optional[ListNode]:
node, prev = head, None
# while 반복문 작성
while node:
next, node.next = node.next, prev
prev, node = node, next
return prev
2. recursively
# 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: ListNode, prev: ListNode = None):
if not node:
return prev
next, node.next = node.next, prev
return reverse(next, node)
return reverse(head)
'Coding Test > leetcode_with_pythonAlgorithmInterview' 카테고리의 다른 글
24. 페어의 노드 스왑 (0) | 2022.09.18 |
---|---|
234. 팰린드롬 연결 리스트 (0) | 2022.09.18 |
876. 연결리스트의 중앙 (0) | 2022.09.18 |
42. 빗물 트래핑 (0) | 2022.09.16 |
121. 주식을 사고팔기 가장 좋은 시점 (0) | 2022.09.16 |