707. Design Linked List
https://leetcode.com/problems/design-linked-list/
solution
增加节点和删除节点的有效index范围不同
class MyLinkedList:
def __init__(self):
self.dummy = ListNode()
self.size = 0
def get(self, index: int) -> int:
if index < 0 or index >= self.size:
return -1
cur = self.dummy.next
for i in range(index):
cur = cur.next
return cur.val
def addAtHead(self, val: int) -> None:
tmp = self.dummy.next
self.dummy.next = ListNode(val)
self.dummy.next.next = tmp
self.size += 1
def addAtTail(self, val: int) -> None:
cur = self.dummy
while cur.next is not None:
cur = cur.next
cur.next = ListNode(val)
self.size += 1
def addAtIndex(self, index: int, val: int) -> None:
if index < 0 or index > self.size:
return
cur = self.dummy
for i in range(index):
cur = cur.next
tmp = cur.next
cur.next = ListNode(val)
cur.next.next = tmp
self.size += 1
def deleteAtIndex(self, index: int) -> None:
if index < 0 or index >= self.size:
return
i = 0
cur = self.dummy
while i < index:
cur = cur.next
i += 1
cur.next = cur.next.next
self.size -= 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)
时间复杂度:index相关操作为 O(index), 其余为 O(1) 空间复杂度:O(n)
Follow up
Last updated