Notice
Recent Posts
Recent Comments
Link
오늘도 개발
30. Design Linked List 본문
문제
singly linked list나 doubly linked list를 구현하시오.
singly linked list인 경우 node는 val과 next 속성을 갖습니다.
doubly linked list인 경우 node는 val, prev, next 속성을 갖습니다.
Singly Linked List 해결 방식
class Node:
def __init__(self, value):
self.value = value
self.next = None
class MyLinkedList:
def __init__(self):
self.head = None
self.length = 0
def get(self, index):
if index < 0 or self.length <= index:
return -1
if self.head == None:
return -1
current = self.head
for i in range(index):
current = current.next
return current.value
def addAtHead(self, val):
new_node = Node(val)
new_node.next = self.head
self.head = new_node
self.length += 1
def addAtTail(self, val):
current = self.head
if not current:
self.head = Node(val)
else:
while(current.next != None):
current = current.next
current.next = Node(val)
self.length += 1
def addAtIndex(self, index, val):
if index < 0 or self.length < index:
return
if index == 0:
self.addAtHead(val)
else:
current = self.head
for i in range(index - 1):
current = current.next
new_node = Node(val)
new_node.next = current.next
current.next = new_node
self.length += 1
def deleteAtIndex(self, index):
if index < 0 or self.length <= index:
return
current = self.head
if index == 0:
self.head = current.next
else:
for i in range(index - 1):
current = current.next
current.next = current.next.next
self.length -= 1'자료구조 & 알고리즘 > Leetcode' 카테고리의 다른 글
| 32. Linked List Cycle II (0) | 2022.10.20 |
|---|---|
| 31. Linked List Cycle (0) | 2022.10.20 |
| 28. Rotate Array (0) | 2022.10.17 |
| 27. Minimum Size Subarray Sum (0) | 2022.10.15 |
| 26. Two Sum II - Input array is sorted (1) | 2022.10.15 |