Python 3は単純なループキューを実現
2474 ワード
タイトルはLeetcodeキューから
ループキュー実装を設計します.ループキューは、FIFO(先進的なプリフェッチ)の原則に基づいて動作し、キューの最後がキューの先頭に接続されてループを形成する線形データ構造である.「リングバッファ」とも呼ばれています.
ループキューの利点の1つは、このキューが以前に使用した空間を利用できることです.通常のキューでは、キューがいっぱいになると、キューの前にスペースがあっても次の要素を挿入できません.しかし、ループキューを使用すると、これらのスペースを使用して新しい値を格納することができます.
あなたの実装は、次の操作をサポートする必要があります.
MyCircularQueue(k):コンストラクタで、キュー長をkに設定します.Front:キューの先頭から要素を取得します.キューが空の場合は、-1を返します.Rear:キューの最後の要素を取得します.キューが空の場合は、-1を返します.EnQueue(value):ループキューに要素を挿入します.挿入に成功した場合は真を返します.deQueue():ループキューから要素を削除します.削除に成功した場合は、真を返します.isEmpty():ループキューが空であるかどうかを確認します.isFull():ループキューがいっぱいかどうかを確認します.
私の解:
ループキュー実装を設計します.ループキューは、FIFO(先進的なプリフェッチ)の原則に基づいて動作し、キューの最後がキューの先頭に接続されてループを形成する線形データ構造である.「リングバッファ」とも呼ばれています.
ループキューの利点の1つは、このキューが以前に使用した空間を利用できることです.通常のキューでは、キューがいっぱいになると、キューの前にスペースがあっても次の要素を挿入できません.しかし、ループキューを使用すると、これらのスペースを使用して新しい値を格納することができます.
あなたの実装は、次の操作をサポートする必要があります.
MyCircularQueue(k):コンストラクタで、キュー長をkに設定します.Front:キューの先頭から要素を取得します.キューが空の場合は、-1を返します.Rear:キューの最後の要素を取得します.キューが空の場合は、-1を返します.EnQueue(value):ループキューに要素を挿入します.挿入に成功した場合は真を返します.deQueue():ループキューから要素を削除します.削除に成功した場合は、真を返します.isEmpty():ループキューが空であるかどうかを確認します.isFull():ループキューがいっぱいかどうかを確認します.
私の解:
class MyCircularQueue:
def __init__(self, k: int): #and
"""
Initialize your data structure here. Set the size of the queue to be k.
"""
self.__length = k
self.queue = [0] * k
self.__head = 0
self.__tail = -1
self.__count = 0
def enQueue(self, value: int) -> bool:
"""
Insert an element into the circular queue. Return true if the operation is successful.
"""
if self.isFull() == False:
if self.__tail == self.__length-1: #
self.__tail = 0
else:
self.__tail += 1
self.queue[self.__tail] = value
self.__count += 1
return True
else:
return False
def deQueue(self) -> bool:
"""
Delete an element from the circular queue. Return true if the operation is successful.
"""
if self.isEmpty() == False :
self.queue[self.__head] = 0
self.__count -= 1
if self.__head != self.__tail:
if self.__head == self.__length-1:
self.__head = 0
else:
self.__head += 1
else:
self.__head = 0
self.__tail = -1
return True
else:
return False
def Front(self) -> int:
"""
Get the front item from the queue.
"""
if self.isEmpty():
return -1
else:
return self.queue[self.__head]
def Rear(self) -> int:
"""
Get the last item from the queue.
"""
if self.isEmpty():
return -1
else:
return self.queue[self.__tail]
def isEmpty(self) -> bool:
"""
Checks whether the circular queue is empty or not.
"""
if self.__count == 0:
return True
else:
return False
def isFull(self) -> bool:
"""
Checks whether the circular queue is full or not.
"""
if self.__count == self.__length:
return True
else:
return False