Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- 메세지큐
- 솔루션조사
- POD
- 컨설턴트
- BFS
- 생성형 AI
- 컨설팅
- vuejs
- LeetCode
- SpringBoot
- Python
- 로깅
- GPT
- jpa
- 머신러닝
- 리트코드
- 생성형
- vue.js
- Docker
- fast api
- Redis
- 도커
- 오픈시프트
- fastapi
- k8s
- Machine Learning
- LLaMa
- 쿠버네티스
- kubernetes
- OpenShift
Archives
- Today
- Total
수 많은 우문은 현답을 만든다
Reverse Linked List 본문
Given the head of a singly linked list, reverse the list, and return the reversed list.
우선 구조를 파악하고 코딩해보자.
head의 구조는 어떻게 생겼을까?
펼치기
더보기
head : ListNode{val:1, next:ListNode{val:2, next: None}}
그럼 head는 어떻게 선언을 했을까? 이해를 위해 역으로 생각보자.
펼치기
더보기
head = ListNode(1)
head.next = ListNode(2)
head.next.next = ListNode(3)
풀이
더보기
# 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]:
# 1. 복제대상 : head를 그대로 쓰는 것 보다는 새로운 LinkedList Node를 만들자
# 2. 신규헤드 : 빈노드로 구성하자
# 3. 복제대상을 반복하자
# 4. 다음번 복제할 임시저장 및 인덱스 역할을 할 노드를 만들자
# 핵심은 포인터를 역으로 가리키게 하는 것
class Solution:
def reverseList(self, head: Optional[ListNode]) -> Optional[ListNode]:
current = head
prev = None #None은 빈 객체를 뜻한다.
while current is not None:
next_node = current.next
current.next = prev
prev = current
current = next_node #다음 대상으로 이동
return prev
'코딩테스트 > Level 3 (deprecated)' 카테고리의 다른 글
(Easy) Balanced Binary Tree (0) | 2023.06.18 |
---|---|
Merge Two Sorted Lists (0) | 2023.06.15 |
(Medium) Valid Parentheses (1) | 2023.06.10 |