牛客网 | 猫狗收容所
来源:互联网 发布:基础设施建设投资数据 编辑:程序博客网 时间:2024/04/30 03:04
题目描述
有家动物收容所只收留猫和狗,但有特殊的收养规则,收养人有两种收养方式,第一种为直接收养所有动物中最早进入收容所的,第二种为选择收养的动物类型(猫或狗),并收养该种动物中最早进入收容所的。
给定一个操作序列int[][2] ope(C++中为vector<vector<int>>)代表所有事件。若第一个元素为1,则代表有动物进入收容所,第二个元素为动物的编号,正数代表狗,负数代表猫;若第一个元素为2,则代表有人收养动物,第二个元素若为0,则采取第一种收养方式,若为1,则指定收养狗,若为-1则指定收养猫。请按顺序返回收养的序列。若出现不合法的操作,即没有可以符合领养要求的动物,则将这次领养操作忽略。
测试样例:
[[1,1],[1,-1],[2,0],[2,-1]]
返回:[1,-1]
import java.util.*;public class CatDogAsylum { public ArrayList<Integer> asylum(int[][] ope) { // write code here int length = ope.length; ArrayList<Integer> inlist = new ArrayList<>(); ArrayList<Integer> outlist = new ArrayList<>(); for (int i = 0; i < length; i++) { if(ope[i][0]==1)//进收养所 { inlist.add(ope[i][1]); } else if(ope[i][0]==2)//出收养所 { if(inlist.isEmpty()) continue; if(ope[i][1]==0)//取出第一个动物 { outlist.add(inlist.get(0)); inlist.remove(0); } else if(ope[i][1]==1)//取出狗 { for (int j = 0; j < inlist.size(); j++) { if(inlist.get(j)>0) { outlist.add(inlist.get(j)); inlist.remove(j); break; } } } else if(ope[i][1]==-1)//取出猫 { for (int j = 0; j < inlist.size(); j++) { if(inlist.get(j)<0) { outlist.add(inlist.get(j)); inlist.remove(j); break; } } } } } return outlist; }}
0 0
- 牛客网 | 猫狗收容所
- 猫狗收容所
- 猫狗收容所
- 猫狗收容所
- 猫狗收容所
- 猫狗收容所
- 猫狗收容所
- 《程序员面试金典》猫狗收容所
- 《程序员面试金典》--狗猫收容所
- 猫狗收容所之程序员面试经典
- 【程序员面试金典】猫狗收容所
- 以队列的方式实现收容所收养猫和狗
- 程序员面试金典题解 猫狗收容所
- 程序员面试金典——猫狗收容所
- 程序员面试金典:双栈排序、猫狗收容所
- 第六天 用两个栈实现队列+双栈排序+猫狗收容所
- 《Cracking the Coding Interview程序员面试金典》----猫狗收容所
- 犬类收容所人员将7只小狗当狗妈妈面摔死
- 二分查找java语言实现
- LeetCode:Happy Number
- 关于web性能的思考与分享[09]-fis3构建工具-语法教程(1)之资源嵌入
- sqoop导入导出数据库文件
- Android高效率编码-第三方SDK详解系列(二)——Bmob后端云开发,实现登录注册,更改资料,修改密码,邮箱验证,上传,下载,推送消息,缩略图加载等功能
- 牛客网 | 猫狗收容所
- Canvas中的非零环绕规则原理
- 浅谈Activity启动模式
- Activiti进阶(十一)——分配组任务的三种方式
- 网络协议之《网络七层协议》
- Comparator字母排序
- jquery自动刷新页面的几种方法
- JVM可支持的最大线程数(转)
- 括号层次