반응형
# Problem
Given the head of a singly linked list, reverse the list, and return the reversed list. ![]() ![]() Constraints:
|
# My Answer
# 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 = head
rev = None
while node and node.next:
rev, rev.next, node = node, rev, node.next
if node:
rev,rev.next = node,rev
return rev
# Solution 1 - 재귀 구조로 뒤집기
# 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)
# Solution 2 - 반복 구조로 뒤집기
# 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
반응형
'Algorithm > LEET CODE ( 파이썬 알고리즘 인터뷰)' 카테고리의 다른 글
[LEET CODE] 24. Swap Nodes in Pairs (0) | 2021.03.23 |
---|---|
[LEET CODE] 2. Add Two Numbers ( 숫자형 리스트 병합하기) (0) | 2021.03.22 |
[LEET CODE] 21. Merge Two Sorted Lists ( 연산자 우선순위, 변수 스왑) (0) | 2021.03.22 |
[LEET CODE] 234. Palindrome Linked List ( 연결리스트, 런너 기법) (0) | 2021.03.22 |
[LEET CODE] 121. Best Time to Buy and Sell Stock (0) | 2021.03.22 |