题目信息

解题思路

代码

  class ListNode:
	  def __init__(self, val=0, next=None):
		  self.val = val
		  self.next = next
  
  class MyLinkedList:
  
	  def __init__(self):
		  self.head = None
  
  
	  def get(self, index: int) -> int:
		  cur = 0
		  p = self.head
		  while p != None:
			  if cur == index:
				  return p.val
			  p = p.next
			  cur += 1
		  return -1
  
  
	  def addAtHead(self, val: int) -> None:
		  newHead = ListNode(val)
		  newHead.next = self.head
		  self.head = newHead
  
  
	  def addAtTail(self, val: int) -> None:
		  newTail = ListNode(val)
		  if self.head == None:
			  self.head = newTail
			  return
		  p = self.head
		  while p.next != None:
			  p = p.next
		  p.next = newTail
  
  
	  def addAtIndex(self, index: int, val: int) -> None:
		  if index <= 0:
			  self.addAtHead(val)
			  return
		  cur = 0
		  p = self.head
		  while p != None:
			  if cur + 1 == index:
				  newNode = ListNode(val)
				  newNode.next = p.next
				  p.next = newNode
				  return
			  p = p.next
			  cur += 1
  
  
	  def deleteAtIndex(self, index: int) -> None:
		  if index < 0:
			  return
		  cur = 0
		  p = self.head
		  if index == 0:
			  self.head = p.next
			  p.next = None
			  return
		  while p != None:
			  if cur + 1 == index and p.next != None:
				  p.next = p.next.next
				  return
			  p = p.next
			  cur += 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)