class AnimalShelf {
public:
vector<queue<int>> shelves;
AnimalShelf() {
shelves.emplace_back(queue<int>());
shelves.emplace_back(queue<int>());
}
void enqueue(vector<int> animal) {
shelves[animal[1]].push(animal[0]);
}
vector<int> dequeueAny() {
if (shelves[0].empty() && shelves[1].empty()) return {-1, -1};
int cat = shelves[0].empty() ? 20001 : shelves[0].front();
int dog = shelves[1].empty() ? 20001 : shelves[1].front();
if (cat <= dog) {
return dequeueCat();
}
else return dequeueDog();
}
vector<int> dequeueDog() {
if (shelves[1].empty()) return {-1, -1};
vector<int> res = {shelves[1].front(), 1};
shelves[1].pop();
return res;
}
vector<int> dequeueCat() {
if (shelves[0].empty()) return {-1, -1};
vector<int> res = {shelves[0].front(), 0};
shelves[0].pop();
return res;
}
};
/**
* Your AnimalShelf object will be instantiated and called as such:
* AnimalShelf* obj = new AnimalShelf();
* obj->enqueue(animal);
* vector<int> param_2 = obj->dequeueAny();
* vector<int> param_3 = obj->dequeueDog();
* vector<int> param_4 = obj->dequeueCat();
*/
Leetcode 03.06.动物收容所
最新推荐文章于 2021-04-21 14:38:52 发布