动物收容所。有家动物收容所只收容狗与猫,且严格遵守“先进先出”的原则。在收养该收容所的动物时,收养人只能收养所有动物中“最老”(由其进入收容所的时间长短而定)的动物,或者可以挑选猫或狗(同时必须收养此类动物中“最老”的)。换言之,收养人不能自由挑选想收养的对象。请创建适用于这个系统的数据结构,实现各种操作方法,比如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. 动物收容所相关推荐

  1. 面试题 03.06. 动物收容所

    面试题 03.06. 动物收容所 思路:队列,记录猫和狗,all记录当前最老的是猫还是狗 class AnimalShelf { public:queue<vector<int> & ...

  2. LeetCode 面试题 03.06. 动物收容所

    文章目录 一.题目 1.题目描述 2.基础框架 3.原题链接 二.解题报告 1.思路分析 2.时间复杂度 3.代码详解 1)队列的增删改查 2)源码 三.本题小知识 四.加群须知 一.题目 1.题目描 ...

  3. LeetCode《程序员面试金典》面试题 03.06. 动物收容所

    LeetCode 面试题 03.06. 动物收容所 题目 解题 解题一 解题二 解题三 题目 "最老"可以用编号来比较,编号越小,代表越老,题目已经给了动物编号,如果没有需要自己创 ...

  4. 【程序员面试金典】面试题 03.06. 动物收容所

    [程序员面试金典]面试题 03.06. 动物收容所 题目描述 解题思路 题目描述 描述:动物收容所.有家动物收容所只收容狗与猫,且严格遵守"先进先出"的原则.在收养该收容所的动物时 ...

  5. 程序员面试金典 - 面试题 03.06. 动物收容所(队列)

    1. 题目 动物收容所.有家动物收容所只收容狗与猫,且严格遵守"先进先出"的原则. 在收养该收容所的动物时,收养人只能收养所有动物中"最老"(由其进入收容所的时 ...

  6. 《程序员面试金典(第6版)》面试题 03.06. 动物收容所

    题目描述 动物收容所.有家动物收容所只收容狗与猫,且严格遵守"先进先出"的原则.在收养该收容所的动物时,收养人只能收养所有动物中"最老"(由其进入收容所的时间长 ...

  7. 面试题 03.06. 动物收容所(简单)

    题目描述 动物收容所.有家动物收容所只收容狗与猫,且严格遵守"先进先出"的原则.在收养该收容所的动物时,收养人只能收养所有动物中"最老"(由其进入收容所的时间长 ...

  8. 【简单】面试题 03.06. 动物收容所

    [题目] 有家动物收容所只收容狗与猫,且严格遵守"先进先出"的原则,在收养该收容所的动物时,收养人只能收养所有动物中"最老"(由其进入收容所的时间长短而定)的动 ...

  9. 文巾解题 面试题 03.06. 动物收容所

    1 题目描述 2 解题思路 这题很简单,顺着思路写就ok了 class AnimalShelf:def __init__(self):self.dog_list=[]self.cat_list=[]s ...

最新文章

  1. 干货丨一文看懂生成对抗网络:从架构到训练技巧
  2. maven_Maven提示:关于可执行jar的全部
  3. 下列关于python的说法中、正确的是-以下关于 Python版本的说法中,哪个是正确的?...
  4. 七个步骤,带你快速读懂 RPC 框架原理
  5. numpy基础(part12)--快速傅里叶变换模块
  6. All men are brothers【并查集+数学】
  7. JavaScript 编程精解 中文第三版 十二、项目:编程语言
  8. freeradius 测试mysql_在linux下安装配置mysql+freeradius
  9. 【mysql】MySQL存储IP地址
  10. 蓝桥杯 ADV-140 算法提高 开灯游戏
  11. c语言顺序栈的基本操作
  12. dos命令行设置网络优先级_实用批处理:不用下软件就能 批量改名,修复网络,删除小文件...
  13. 小学计算机课评课稿,小学信息技术评课稿课件
  14. 矩阵连乘积问题--动态规划
  15. uniapp中使用阿里云视频点播功能
  16. 【可信计算】第九次课:TPM密码资源管理
  17. MSP430系列单片机实用C语言程序设计 张晞pdf
  18. 产品经理的工作职责是什么,需要具备什么能力?
  19. NGR-PEG-6-FAM 肿瘤新生血管靶向肽NGR-聚乙二醇-6-羧甲基荧光素
  20. 网络同步IE收藏夹攻略(转)

热门文章

  1. PHP的strtotime计算2038年以上日期的时间戳错误
  2. Android开发:Bundle传值
  3. WDA基础 弹窗 弹视图 报消息
  4. 开源大转盘抽奖源码,带后台管理,可管理奖品和奖品中奖概率,java语言实现
  5. 根据染色体的起始位置从gff3文件中提取基因名称
  6. Unity背景移动特效
  7. 安装linux系统磁盘阵列,Linux入门教程:磁盘阵列(RAID)
  8. 口胡fhq treap
  9. SQLServer 开启1433端口
  10. 通过onkeypress和onkeydown事件禁用键盘中某些键