<LeetCode 문제>
https://leetcode.com/problems/reverse-linked-list/
Reverse Linked List - LeetCode
Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview.
leetcode.com
연결 리스트를 뒤집는 문제입니다.
<풀이>
반복 구조를 통해 연결리스트를 뒤집으면 다음과 같습니다.
# 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 node:
next,node.next = node.next, prev
prev, node = node, 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: ListNode, prev: ListNode = None):
if not node:
return prev
next,node.next = node.next, prev
return reverse(next,node)
return reverse(head)
<학습내용>
1.
<학습이 필요한 내용>
1.
'Algorithm > 파이썬 알고리즘 인터뷰 스터디' 카테고리의 다른 글
| [연결리스트] 17 페어의 노드 스왑(Swap Nodes in Pairs) (0) | 2021.08.09 |
|---|---|
| [연결리스트] 16 두 수의 덧셈(Reverse Linked List) (0) | 2021.08.09 |
| [연결리스트] 14 두 정렬 리스트의 병합(Merge Two Sorted Lists) (0) | 2021.08.09 |
| [연결리스트] 13 팰린드롬 연결 리스트(Palindrome Linked List) (0) | 2021.08.09 |
| 8/3 스터디 정리중 (0) | 2021.08.04 |