题目
思路
使用双端队列来实现,具体看代码注释
import collectionsclass AnimalShelf:def __init__(self):# 先进先出:队列# 出队狗或者猫,先把其他动物用一个数组保存,找到需要的东西,# 再把临时数组加到队列上# 用双端队列实现self.deque = collections.deque()def enqueue(self, animal: List[int]) -> None:self.deque.append(animal)def dequeueAny(self) -> List[int]:if self.is_empty():return [-1, -1]return self.deque.popleft()def dequeueDog(self) -> List[int]:return self.dequeueClass(class_id=1)def dequeueCat(self) -> List[int]:return self.dequeueClass(class_id=0)def dequeueClass(self, class_id) -> List[int]:if self.is_empty():return [-1, -1]tmp = []while self.deque[0][1] != class_id:tmp.append(self.deque.popleft())if self.is_empty():for i in tmp[::-1]:self.deque.appendleft(i)return [-1, -1]# 找到最老的小狗ans = self.deque.popleft()# 把tmp返回for i in tmp[::-1]:self.deque.appendleft(i)return ansdef is_empty(self):return not self.deque# Your AnimalShelf object will be instantiated and called as such:# obj = AnimalShelf()# obj.enqueue(animal)# param_2 = obj.dequeueAny()# param_3 = obj.dequeueDog()# param_4 = obj.dequeueCat()

