文档章节

猫狗收容所

e
 eversliver
发布于 2016/08/12 11:24
字数 671
阅读 13
收藏 0
点赞 0
评论 0
  • 有家动物收容所只收留猫和狗,但有特殊的收养规则,收养人有两种收养方式,第一种为直接收养所有动物中最早进入收容所的,第二种为选择收养的动物类型(猫或狗),并收养该种动物中最早进入收容所的。 给定一个操作序列int[][2] ope(C++中为vector<vector<int>>)代表所有事件。若第一个元素为1,则代表有动物进入收容所,第二个元素为动物的编号,正数代表狗,负数代表猫;若第一个元素为2,则代表有人收养动物,第二个元素若为0,则采取第一种收养方式,若为1,则指定收养狗,若为-1则指定收养猫。请以顺序返回收养的序列。若出现不合法的操作,即没有可以符合领养要求的动物,则将这次领养操作忽略。
  • 测试样例:

[[1,1],[1,-1],[2,0],[2,-1]]

  • 返回:

[1,-1]

  • 解答: 根据先进先出的原则,自然想到了用队列实现,如果只维护一个队列,那么第一种方法实现起来比较简单,只需要取出队头的动物则可以,但是第二种方法就比较复杂,需要访问整个队列来找出第一个被访问的猫或者狗。
  • 因此我们可以选择维护两个队列来实现,一个队列存放放入的狗,一个队列存放放入的猫,对于第二种方法实现起来相当容易,我们只需要根据要选择的猫或者狗从相应的队列中取出便可以,但是第一种方法需要判断那个两个队列头部的是猫先进入收容所,还是狗先进入,这个时候需要一个标志,所以我们每次把动物放入队列的时候,同时将一个递增的序号放入队列,这个序号就是一个时间序列,根据这个序号便可以轻松实现第一种方法。
class CatDogAsylum {
public:
    vector<int> asylum(vector<vector<int> > ope) {
        // write code here
        queue<int> cat;
        queue<int> dog;
        vector<int> vec;
        int index=0;
        int size1=ope.size();
        for(int i=0;i<size1;i++)
        {
            int kind=ope[i][0];
            if(kind==1)
            {
                if(ope[i][1]>=0)
                {
                    dog.push(index++);
                    dog.push(ope[i][1]);
                }
                else
                {
                    cat.push(index++);
                    cat.push(ope[i][1]);
                }
            }
            else
            {
                if(ope[i][1]==0)
                {
                    int min=0;
                    if(cat.empty()&&!dog.empty())
                        min=1;
                    if(!cat.empty()&&dog.empty())
                        min=-1;
                    if(!cat.empty()&&!dog.empty())
                        min=dog.front()>cat.front()?-1:1;
                    if(min==-1)
                    {
                        cat.pop();
                        vec.push_back(cat.front());
                        cat.pop();
                    }
                    if(min==1)
                    {
                        dog.pop();
                        vec.push_back(dog.front());
                        dog.pop();
                    }
                }
                else
                {
                    if(ope[i][1]==1&&!dog.empty())
                    {
                        dog.pop();
                        vec.push_back(dog.front());
                        dog.pop();
                    }
                    if(ope[i][1]==-1&&!cat.empty())
                    {
                        cat.pop();
                        vec.push_back(cat.front());
                        cat.pop();
                    }
                }
 
            }
        }
        return vec;
    }
};

吐槽一下,题干太长了

© 著作权归作者所有

共有 人打赏支持
e
粉丝 0
博文 30
码字总数 10582
作品 0
成都
动物收容所,先进先出

有家动物收容所只收容狗与猫,且严格遵守“先进先出”原则。在收养该收容所的动物时,收养人只能收养进入收容所时间最长的动物,或者,挑选猫或狗中收养时间最长的。 请创建适合这个系统的数...

一贱书生 ⋅ 2016/11/17 ⋅ 0

java 接口(interface)的意义

接口的作用对于很多新手来说很不容易理解,我给大家举个例子。 接口只是一个规范,所以里面的方法都是空的。 假如我开了一个宠物粮店,声明所有宠物都可以来我这里买粮食,这就相当于一个接口...

梅超疯 ⋅ 2013/11/26 ⋅ 0

神奇!!!人工智能竟然是模拟人脑设计出来的

神奇!!!人工智能竟然是模拟人脑设计出来的 人工智能的实现主要依靠于两个方面。第一个方面是数学建模,也就是软件跟算法,这需要很高深的一个数学跟神经学的原理。第二个是大数据的喂养。...

朱有鹏老师 ⋅ 01/17 ⋅ 0

使用CUBE和ROLLUP对数据进行汇总

  想要找一个既快捷又有效的方法来对您存储在数据库里的数据进行汇总分析吗?SQL语言中的ROLLUP和CUBE命令提供了一个非常有用的工具,可以让您快速深入地获取数据的各种内在性质。ROLLUP和C...

Adairs ⋅ 2016/03/10 ⋅ 0

迁移学习基础知识 源域 多任务学习 目标域

迁移学习 简单的将就是举一反三,是将已经学习到的知识迁移到另一种未知的知识的学习,即从源域迁移到目标域。 小故事 从前有一个商人,在帝都以卖猫的玩偶为生,他叫CNN,很厉害,是一个分辨...

superyr_210 ⋅ 01/02 ⋅ 0

你也可以拥有萌萌哒的狗,RoVR宠物模拟器开启众筹

爱猫人士别难过,这款游戏众筹成功后也许会推出VR猫。 “萌宠风”在各大社交平台盛行已久,而且热度没有消退的迹象。每天看着网上云养的猫猫狗狗,你是否有几分想养宠物的冲动,但马上被各种...

行者武松 ⋅ 03/01 ⋅ 0

机器学习中的统计学与概率论

例子1:学生考试,题:根据脚判断动物。考生看到题撕卷走,老师怒,问道,是哪班,考生提起裤子回,你猜?你猜? 例子2:在医院,医生会对以往的糖尿病人进行归纳总结,再有进来患者,会用归...

Junes_k ⋅ 2017/12/05 ⋅ 0

喵星人的亲热不懂

/番外一篇不管是不是猫奴,大家都觉得猫是死傲娇生物,相比于狗,猫是冷酷、不贴心、不可依赖;它们是随性的,不愿受限于教条的生物。 但是这一切可能仅仅是误解,误解的根源则在于,人们总是...

Owl of Minerva ⋅ 2015/05/09 ⋅ 0

基于TensorFlow的Cats vs. Dogs(猫狗大战)实现和详解(1)

2017.5.29   官方的MNIST例子里面训练数据的下载和导入都是用已经写好的脚本完成的,至于里面实现细节也没高兴去看源码,感觉写得太正式,我这个初学者不好理解。于是在优酷上找到了Kevin...

qq_16137569 ⋅ 2017/05/29 ⋅ 0

男子发倡议书:要小区居民将猫狗送走!理由:老婆怀孕了!

奇葩年年有,今年特别多。前不久,刚刚发生了一女子因为老公还没到,强行扒门阻拦高铁发车的事。现在又出现了,合肥一业主在小区内粘贴告示,要求小区其他住户将自家的宠物猫或者宠物狗,暂时...

有态度的互联网人 ⋅ 01/11 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

Centos7重置Mysql 8.0.1 root 密码

问题产生背景: 安装完 最新版的 mysql8.0.1后忘记了密码,向重置root密码;找了网上好多资料都不尽相同,根据自己的问题总结如下: 第一步:修改配置文件免密码登录mysql vim /etc/my.cnf 1...

豆花饭烧土豆 ⋅ 今天 ⋅ 0

熊掌号收录比例对于网站原创数据排名的影响[图]

从去年下半年开始,我在写博客了,因为我觉得业余写写博客也还是很不错的,但是从2017年下半年开始,百度已经推出了原创保护功能和熊掌号平台,为此,我也提交了不少以前的老数据,而这些历史...

原创小博客 ⋅ 今天 ⋅ 0

LVM讲解、磁盘故障小案例

LVM LVM就是动态卷管理,可以将多个硬盘和硬盘分区做成一个逻辑卷,并把这个逻辑卷作为一个整体来统一管理,动态对分区进行扩缩空间大小,安全快捷方便管理。 1.新建分区,更改类型为8e 即L...

蛋黄Yolks ⋅ 今天 ⋅ 0

Hadoop Yarn调度器的选择和使用

一、引言 Yarn在Hadoop的生态系统中担任了资源管理和任务调度的角色。在讨论其构造器之前先简单了解一下Yarn的架构。 上图是Yarn的基本架构,其中ResourceManager是整个架构的核心组件,它负...

p柯西 ⋅ 今天 ⋅ 0

uWSGI + Django @ Ubuntu

创建 Django App Project 创建后, 可以看到路径下有一个wsgi.py的问题 uWSGI运行 直接命令行运行 利用如下命令, 可直接访问 uwsgi --http :8080 --wsgi-file dj/wsgi.py 配置文件 & 运行 [u...

袁祾 ⋅ 今天 ⋅ 0

JVM堆的理解

在JVM中,我们经常提到的就是堆了,堆确实很重要,其实,除了堆之外,还有几个重要的模块,看下图: 大 多数情况下,我们并不需要关心JVM的底层,但是如果了解它的话,对于我们系统调优是非常...

不羁之后 ⋅ 昨天 ⋅ 0

推荐:并发情况下:Java HashMap 形成死循环的原因

在淘宝内网里看到同事发了贴说了一个CPU被100%的线上故障,并且这个事发生了很多次,原因是在Java语言在并发情况下使用HashMap造成Race Condition,从而导致死循环。这个事情我4、5年前也经历...

码代码的小司机 ⋅ 昨天 ⋅ 2

聊聊spring cloud gateway的RetryGatewayFilter

序 本文主要研究一下spring cloud gateway的RetryGatewayFilter GatewayAutoConfiguration spring-cloud-gateway-core-2.0.0.RC2-sources.jar!/org/springframework/cloud/gateway/config/G......

go4it ⋅ 昨天 ⋅ 0

创建新用户和授予MySQL中的权限教程

导读 MySQL是一个开源数据库管理软件,可帮助用户存储,组织和以后检索数据。 它有多种选项来授予特定用户在表和数据库中的细微的权限 - 本教程将简要介绍一些选项。 如何创建新用户 在MySQL...

问题终结者 ⋅ 昨天 ⋅ 0

android -------- 颜色的半透明效果配置

最近有朋友问我 Android 背景颜色的半透明效果配置,我网上看资料,总结了一下, 开发中也是常常遇到的,所以来写篇博客 常用的颜色值格式有: RGB ARGB RRGGBB AARRGGBB 这4种 透明度 透明度...

切切歆语 ⋅ 昨天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部