01 · Question
Design your implementation of a singly linked list. Implement get, addAtHead, addAtTail, addAtIndex, and deleteAtIndex.
02 · Solution
Reference solution
1class MyLinkedList:2 def __init__(self):3 self.head = None4 self.size = 056 def get(self, index: int) -> int:7 if index < 0 or index >= self.size:8 return -19 cur = self.head10 for _ in range(index):11 cur = cur.next12 return cur.val1314 def addAtHead(self, val: int) -> None:15 node = ListNode(val)16 node.next = self.head17 self.head = node18 self.size += 11920 def addAtTail(self, val: int) -> None:21 node = ListNode(val)22 if not self.head:23 self.head = node24 else:25 cur = self.head26 while cur.next:27 cur = cur.next28 cur.next = node29 self.size += 13031 def addAtIndex(self, index: int, val: int) -> None:32 if index < 0 or index > self.size:33 return34 if index == 0:35 self.addAtHead(val)36 return37 cur = self.head38 for _ in range(index - 1):39 cur = cur.next40 node = ListNode(val)41 node.next = cur.next42 cur.next = node43 self.size += 14445 def deleteAtIndex(self, index: int) -> None:46 if index < 0 or index >= self.size:47 return48 if index == 0:49 self.head = self.head.next50 self.size -= 151 return52 cur = self.head53 for _ in range(index - 1):54 cur = cur.next55 cur.next = cur.next.next56 self.size -= 1