面试题 03.07. 动物收容所
动物收容所。有家动物收容所只收容狗与猫,且严格遵守“先进先出”的原则。在收养该收容所的动物时,收养人只能收养所有动物中“最老”(由其进入收容所的时间长短而定)的动物,或者可以挑选猫或狗(同时必须收养此类动物中“最老”的)。换言之,收养人不能自由挑选想收养的对象。请创建适用于这个系统的数据结构,实现各种操作方法,比如enqueue、dequeueAny、dequeueDog和dequeueCat。允许使用Java内置的LinkedList数据结构。
enqueue方法有一个animal参数,animal[0]代表动物编号,animal[1]代表动物种类,其中 0 代表猫,1 代表狗。
dequeue*方法返回一个列表[动物编号, 动物种类],若没有可以收养的动物,则返回[-1,-1]。
class AnimalShelf {
public: queue<pair<int,int>> cat;queue<pair<int,int>> dog;queue<int> anyc; queue<int> anyd;int count = 0;AnimalShelf() {}void enqueue(vector<int> animal) {if(animal[1] == 0){cat.push( make_pair(animal[0],animal[1]));count++;anyc.push(count);}else{dog.push( make_pair(animal[0],animal[1]));count++;anyd.push(count);}}vector<int> dequeueAny() {if(!dog.empty() && cat.empty()){return dequeueDog();}else if(!cat.empty() && dog.empty()){return dequeueCat();}else if(!cat.empty() && !dog.empty()){if(anyd.front() < anyc.front()){return dequeueDog();}else if(anyd.front() > anyc.front()){return dequeueCat();}}return {-1,-1};}vector<int> dequeueDog() {if(!dog.empty()){pair<int,int> tmp = dog.front();dog.pop();anyd.pop();return {tmp.first,tmp.second};}return {-1,-1};}vector<int> dequeueCat() {if(!cat.empty()){pair<int,int> tmp = cat.front();cat.pop();anyc.pop();return {tmp.first,tmp.second};}return {-1,-1};}
};/*** 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();*/
面试题 03.07. 动物收容所相关推荐
- 面试题 03.06. 动物收容所
面试题 03.06. 动物收容所 思路:队列,记录猫和狗,all记录当前最老的是猫还是狗 class AnimalShelf { public:queue<vector<int> & ...
- LeetCode 面试题 03.06. 动物收容所
文章目录 一.题目 1.题目描述 2.基础框架 3.原题链接 二.解题报告 1.思路分析 2.时间复杂度 3.代码详解 1)队列的增删改查 2)源码 三.本题小知识 四.加群须知 一.题目 1.题目描 ...
- LeetCode《程序员面试金典》面试题 03.06. 动物收容所
LeetCode 面试题 03.06. 动物收容所 题目 解题 解题一 解题二 解题三 题目 "最老"可以用编号来比较,编号越小,代表越老,题目已经给了动物编号,如果没有需要自己创 ...
- 【程序员面试金典】面试题 03.06. 动物收容所
[程序员面试金典]面试题 03.06. 动物收容所 题目描述 解题思路 题目描述 描述:动物收容所.有家动物收容所只收容狗与猫,且严格遵守"先进先出"的原则.在收养该收容所的动物时 ...
- 程序员面试金典 - 面试题 03.06. 动物收容所(队列)
1. 题目 动物收容所.有家动物收容所只收容狗与猫,且严格遵守"先进先出"的原则. 在收养该收容所的动物时,收养人只能收养所有动物中"最老"(由其进入收容所的时 ...
- 《程序员面试金典(第6版)》面试题 03.06. 动物收容所
题目描述 动物收容所.有家动物收容所只收容狗与猫,且严格遵守"先进先出"的原则.在收养该收容所的动物时,收养人只能收养所有动物中"最老"(由其进入收容所的时间长 ...
- 面试题 03.06. 动物收容所(简单)
题目描述 动物收容所.有家动物收容所只收容狗与猫,且严格遵守"先进先出"的原则.在收养该收容所的动物时,收养人只能收养所有动物中"最老"(由其进入收容所的时间长 ...
- 【简单】面试题 03.06. 动物收容所
[题目] 有家动物收容所只收容狗与猫,且严格遵守"先进先出"的原则,在收养该收容所的动物时,收养人只能收养所有动物中"最老"(由其进入收容所的时间长短而定)的动 ...
- 文巾解题 面试题 03.06. 动物收容所
1 题目描述 2 解题思路 这题很简单,顺着思路写就ok了 class AnimalShelf:def __init__(self):self.dog_list=[]self.cat_list=[]s ...
最新文章
- 干货丨一文看懂生成对抗网络:从架构到训练技巧
- maven_Maven提示:关于可执行jar的全部
- 下列关于python的说法中、正确的是-以下关于 Python版本的说法中,哪个是正确的?...
- 七个步骤,带你快速读懂 RPC 框架原理
- numpy基础(part12)--快速傅里叶变换模块
- All men are brothers【并查集+数学】
- JavaScript 编程精解 中文第三版 十二、项目:编程语言
- freeradius 测试mysql_在linux下安装配置mysql+freeradius
- 【mysql】MySQL存储IP地址
- 蓝桥杯 ADV-140 算法提高 开灯游戏
- c语言顺序栈的基本操作
- dos命令行设置网络优先级_实用批处理:不用下软件就能 批量改名,修复网络,删除小文件...
- 小学计算机课评课稿,小学信息技术评课稿课件
- 矩阵连乘积问题--动态规划
- uniapp中使用阿里云视频点播功能
- 【可信计算】第九次课:TPM密码资源管理
- MSP430系列单片机实用C语言程序设计 张晞pdf
- 产品经理的工作职责是什么,需要具备什么能力?
- NGR-PEG-6-FAM 肿瘤新生血管靶向肽NGR-聚乙二醇-6-羧甲基荧光素
- 网络同步IE收藏夹攻略(转)