2
def __init__(self, val: int):12
self.head.next = self.tail13
self.tail.prev = self.head16
def get(self, index: int) -> int:17
if index < 0 or index >= self.size:19
# Distance of index is closer to head20
if index + 1 < self.size - index:22
for i in range(index + 1):24
# Distance of index is closer to tail27
for i in range(self.size - index):31
def addAtHead(self, val: int) -> None:34
nextNode = self.head.next41
def addAtTail(self, val: int) -> None:43
prevNode = self.tail.prev51
def addAtIndex(self, index: int, val: int) -> None:57
if index < self.size - index:59
for i in range(index):60
prevNode = prevNode.next61
nextNode = prevNode.next64
for i in range(self.size - index):65
nextNode = nextNode.prev66
prevNode = nextNode.prev73
def deleteAtIndex(self, index: int) -> None:74
if index < 0 or index >= self.size:76
if index < self.size - index:78
for i in range(index):79
prevNode = prevNode.next80
nextNode = prevNode.next.next83
for i in range(self.size - index - 1):84
nextNode = nextNode.prev85
prevNode = nextNode.prev.prev87
prevNode.next = nextNode88
nextNode.prev = prevNode91
# Your MyLinkedList object will be instantiated and called as such:93
# param_1 = obj.get(index)96
# obj.addAtIndex(index,val)97
# obj.deleteAtIndex(index)