728x90
난이도 : medium
linked list를 제작하는 문제.
class ListNode:
def __init__(self, value=0, next_node=None):
self.val = value
self.next = next_node
class MyLinkedList:
def __init__(self):
self.dummy = ListNode()
self.size = 0
def get(self, index: int) -> int:
if index < 0 or index >= self.size:
return -1
current = self.dummy.next
for _ in range(index):
current = current.next
return current.val
def addAtHead(self, val: int) -> None:
self.addAtIndex(0, val)
def addAtTail(self, val: int) -> None:
self.addAtIndex(self.size, val)
def addAtIndex(self, index: int, val: int) -> None:
if index > self.size:
return
predecessor = self.dummy
for _ in range(index):
predecessor = predecessor.next
new_node = ListNode(val, predecessor.next)
predecessor.next = new_node
self.size += 1
def deleteAtIndex(self, index: int) -> None:
if index < 0 or index >= self.size:
return
predecessor = self.dummy
for _ in range(index):
predecessor = predecessor.next
to_delete = predecessor.next
predecessor.next = to_delete.next
to_delete.next = None
self.size -= 1
# Your MyLinkedList object will be instantiated and called as such:
# obj = MyLinkedList()
# param_1 = obj.get(index)
# obj.addAtHead(val)
# obj.addAtTail(val)
# obj.addAtIndex(index,val)
# obj.deleteAtIndex(index)
- ListNode class 구현, 각 node는 val과 다음 node를 가리키는 포인터(next)를 가짐
- MyLinkedList : linked list 관리. dummy node를 사용하여 list의 시작을 표시, size로 리스트 크기 추적
- get : index의 node값을 return. 유효하지 않은 index면 -1 return
- addAtHead : list 맨 앞에 새 node 추가
- addAtTail : list 맨 끝에 새 node 추가
- addAtIndex : 지정된 index에 새 node 삽입. 새 node의 다음 포인터를 설정하고, 이전 node의 다음 포인터를 새 node로 update
- deleteAtIndex : 지정된 index의 node 제거. 제거할 node의 이전 node와 다음 node를 연결하고, 제거한 node의 다음 포인터를 None으로 설정
Runtime : 77ms (14.02%)
Memory : 18.65MB (58.05%)
728x90
'코딩 공부 > Leetcode' 카테고리의 다른 글
[Python] 3151. Special Array I (0) | 2025.02.06 |
---|---|
[Python] 141. Linked List Cycle (0) | 2025.02.05 |
[Python] 1800. Maximum Ascending Subarray Sum (0) | 2025.02.04 |
[Python] 3105. Longest Strictly Increasing or Strictly Decreasing Subarray (0) | 2025.02.03 |
[Python] 1752. Check if Array Is Sorted and Rotated (0) | 2025.02.03 |