classAnimalShelf:def__init__(self):self.q=[deque(),deque()]defenqueue(self,animal:List[int])->None:i,j=animalself.q[j].append(i)defdequeueAny(self)->List[int]:ifnotself.q[0]or(self.q[1]andself.q[1][0]<self.q[0][0]):returnself.dequeueDog()returnself.dequeueCat()defdequeueDog(self)->List[int]:return[-1,-1]ifnotself.q[1]else[self.q[1].popleft(),1]defdequeueCat(self)->List[int]:return[-1,-1]ifnotself.q[0]else[self.q[0].popleft(),0]# 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()
classAnimalShelf{privateq:number[][]=[[],[]];constructor(){}enqueue(animal:number[]):void{const[i,j]=animal;this.q[j].push(i);}dequeueAny():number[]{if(this.q[0].length===0||(this.q[1].length>0&&this.q[0][0]>this.q[1][0])){returnthis.dequeueDog();}returnthis.dequeueCat();}dequeueDog():number[]{if(this.q[1].length===0){return[-1,-1];}return[this.q[1].shift()!,1];}dequeueCat():number[]{if(this.q[0].length===0){return[-1,-1];}return[this.q[0].shift()!,0];}}/** * Your AnimalShelf object will be instantiated and called as such: * var obj = new AnimalShelf() * obj.enqueue(animal) * var param_2 = obj.dequeueAny() * var param_3 = obj.dequeueDog() * var param_4 = obj.dequeueCat() */
usestd::collections::VecDeque;structAnimalShelf{q:[VecDeque<i32>;2],}implAnimalShelf{fnnew()->Self{AnimalShelf{q:[VecDeque::new(),VecDeque::new()],}}fnenqueue(&mutself,animal:Vec<i32>){self.q[animal[1]asusize].push_back(animal[0]);}fndequeue_any(&mutself)->Vec<i32>{ifself.q[0].is_empty()||(!self.q[1].is_empty()&&self.q[1].front().unwrap()<self.q[0].front().unwrap()){self.dequeue_dog()}else{self.dequeue_cat()}}fndequeue_dog(&mutself)->Vec<i32>{ifself.q[1].is_empty(){vec![-1,-1]}else{letdog=self.q[1].pop_front().unwrap();vec![dog,1]}}fndequeue_cat(&mutself)->Vec<i32>{ifself.q[0].is_empty(){vec![-1,-1]}else{letcat=self.q[0].pop_front().unwrap();vec![cat,0]}}}/** * Your AnimalShelf object will be instantiated and called as such: * let obj = AnimalShelf::new(); * obj.enqueue(animal); * let ret_2: Vec<i32> = obj.dequeue_any(); * let ret_3: Vec<i32> = obj.dequeue_dog(); * let ret_4: Vec<i32> = obj.dequeue_cat(); */
classAnimalShelf{privatevarq:[[Int]]=Array(repeating:[],count:2)init(){}funcenqueue(_animal:[Int]){q[animal[1]].append(animal[0])}funcdequeueAny()->[Int]{ifq[0].isEmpty||(!q[1].isEmpty&&q[1].first!<q[0].first!){returndequeueDog()}returndequeueCat()}funcdequeueDog()->[Int]{returnq[1].isEmpty?[-1,-1]:[q[1].removeFirst(),1]}funcdequeueCat()->[Int]{returnq[0].isEmpty?[-1,-1]:[q[0].removeFirst(),0]}}/** * Your AnimalShelf object will be instantiated and called as such: * let obj = new AnimalShelf(); * obj.enqueue(animal); * let param_2 = obj.dequeueAny(); * let param_3 = obj.dequeueDog(); * let param_4 = obj.dequeueCat(); */