1.1、使用数据,模拟队列,通过已存入的元素个数,控制数据移动的范围
insertFront: 将0~size-1
位的元素向后移动,新数据插入0 deleteFront: 将1~size-1
位的元素向前移动,然后将第size-1
位元素清空。
class MyCircularDeque:
def __init__(self, k: int):
"""
Initialize your data structure here. Set the size of the deque to be k.
"""
self.dequeue = [0] * k
self.size = 0
self.c = k
def insertFront(self, value: int) -> bool:
"""
Adds an item at the front of Deque. Return true if the operation is successful.
"""
if self.isFull():
return False
if self.isEmpty():
self.dequeue[0] = value
self.size += 1
return True
#移位
for i in range(self.size):
self.dequeue[self.size-i] = self.dequeue[self.size-i-1]
self.dequeue[0] = value
self.size += 1
return True
def insertLast(self, value: int) -> bool:
"""
Adds an item at the rear of Deque. Return true if the operation is successful.
"""
if self.isFull():
return False
self.dequeue[self.size] = value
self.size += 1
return True
def deleteFront(self) -> bool:
"""
Deletes an item from the front of Deque. Return true if the operation is successful.
"""
if self.isEmpty():
return False
for i in range(1, self.size):
self.dequeue[i-1] = self.dequeue[i]
self.dequeue[self.size-1] = 0
self.size -= 1
return True
def deleteLast(self) -> bool:
"""
Deletes an item from the rear of Deque. Return true if the operation is successful.
"""
if self.isEmpty():
return False
self.dequeue[self.size-1] = 0
self.size -= 1
return True
def getFront(self) -> int:
"""
Get the front item from the deque.
"""
if self.isEmpty():
return -1
else:
return self.dequeue[0]
def getRear(self) -> int:
"""
Get the last item from the deque.
"""
if self.isEmpty():
return -1
else:
return self.dequeue[self.size - 1]
def isEmpty(self) -> bool:
"""
Checks whether the circular deque is empty or not.
"""
return self.size == 0
def isFull(self) -> bool:
"""
Checks whether the circular deque is full or not.
"""
return self.size == self.c