class ListNode:
def __init__(self, val: int):
self.val = val
self.next = None
class MyLinkedList:
def __init__(self):
self.head = ListNode(0)
self.size = 0
def get(self, index: int) -> int:
if index >= self.size:
return -1
cur = self.head.next
for _ in range(index):
cur = cur.next
return cur.val
def addAtHead(self, val: int) -> None:
node = ListNode(val)
node.next = self.head.next
self.head.next = node
self.size += 1
def addAtTail(self, val: int) -> None:
node = ListNode(val)
cur = self.head
while cur.next:
cur = cur.next
cur.next = node
self.size += 1
def addAtIndex(self, index: int, val: int) -> None:
if index > self.size:
return
cur = self.head
for _ in range(index):
cur = cur.next
node = ListNode(val)
node.next = cur.next
cur.next = node
self.size += 1
def deleteAtIndex(self, index: int) -> None:
if index >= self.size:
return
cur = self.head
for _ in range(index):
cur = cur.next
cur.next = cur.next.next
self.size -= 1class ListNode:
def __init__(self, val=0, next=None):
self.val = val
self.next = next
class MyLinkedList:
def __init__(self):
self.head = ListNode(0)
self.size = 0
def getPrev(self, index: int) -> ListNode:
cur = self.head
for _ in range(index):
cur = cur.next
return cur
def get(self, index: int) -> int:
if index >= self.size:
return -1
return self.getPrev(index).next.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
prev = self.getPrev(index)
node = ListNode(val, prev.next)
prev.next = node
self.size += 1
def deleteAtIndex(self, index: int) -> None:
if index >= self.size:
return
prev = self.getPrev(index)
prev.next = prev.next.next
self.size -= 1class ListNode:
def __init__(self, val):
self.val = val
self.prev = None
self.next = None
class MyLinkedList:
def __init__(self):
self.head = ListNode(0)
self.tail = ListNode(0)
self.head.next = self.tail
self.tail.prev = self.head
def get(self, index: int) -> int:
cur = self.head.next
while cur and index > 0:
cur = cur.next
index -= 1
if cur and cur != self.tail and index == 0:
return cur.val
return -1
def addAtHead(self, val: int) -> None:
node, next, prev = ListNode(val), self.head.next, self.head
prev.next = node
next.prev = node
node.next = next
node.prev = prev
def addAtTail(self, val: int) -> None:
node, next, prev = ListNode(val), self.tail, self.tail.prev
prev.next = node
next.prev = node
node.next = next
node.prev = prev
def addAtIndex(self, index: int, val: int) -> None:
cur = self.head.next
while cur and index > 0:
cur = cur.next
index -= 1
if cur and index == 0:
node, next, prev = ListNode(val), cur, cur.prev
prev.next = node
next.prev = node
node.next = next
node.prev = prev
def deleteAtIndex(self, index: int) -> None:
cur = self.head.next
while cur and index > 0:
cur = cur.next
index -= 1
if cur and cur != self.tail and index == 0:
next, prev = cur.next, cur.prev
next.prev = prev
prev.next = nextclass ListNode:
def __init__(self, val=0, next=None, prev=None):
self.val = val
self.next = next
self.prev = prev
class MyLinkedList:
def __init__(self):
self.head = ListNode(0)
self.tail = ListNode(0)
self.head.next = self.tail
self.tail.prev = self.head
self.size = 0
def getPrev(self, index: int) -> ListNode:
if index <= self.size // 2:
cur = self.head
for _ in range(index):
cur = cur.next
else:
cur = self.tail
for _ in range(self.size - index + 1):
cur = cur.prev
return cur
def get(self, index: int) -> int:
if index >= self.size:
return -1
return self.getPrev(index).next.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
node = ListNode(val)
prev = self.getPrev(index)
next = prev.next
prev.next = node
node.prev = prev
node.next = next
next.prev = node
self.size += 1
def deleteAtIndex(self, index: int) -> None:
if index >= self.size:
return
prev = self.getPrev(index)
cur = prev.next
next = cur.next
prev.next = next
next.prev = prev
self.size -= 1