面试金典-猫狗问题
来源:互联网 发布:c语言主函数参数 编辑:程序博客网 时间:2024/05/29 03:34
import java.util.*;public class CatDogAsylum { public ArrayList<Integer> asylum(int[][] ope) { // write code here LinkedList<Integer> cat = new LinkedList<Integer>(); LinkedList<Integer> dog = new LinkedList<Integer>(); ArrayList<Integer> result= new ArrayList<Integer>(); int len = ope.length; for(int i = 0; i<len; i++){ int[] flag = ope[i]; int addOrTake = flag[0]; int catOrDog = flag[1]; //添加动物 if(addOrTake == 1){ if(catOrDog>0)//狗 dog.add(i); if(catOrDog<0)//猫 cat.add(i); } //收养动物 if(addOrTake == 2){ //猫狗都有 if(!dog.isEmpty() && !cat.isEmpty()){ if(catOrDog == 0 && dog.getFirst()<cat.getFirst()|| catOrDog == 1) result.add(ope[dog.poll()][1]); else if(catOrDog == 0 &&dog.getFirst()>cat.getFirst()|| catOrDog == -1) result.add(ope[cat.poll()][1]); } //只有猫 else if(dog.isEmpty() && !cat.isEmpty()&&(catOrDog == 0 || catOrDog == -1)){ result.add(ope[cat.poll()][1]); } //只有狗 else if(!dog.isEmpty() && cat.isEmpty()&&(catOrDog == 0 || catOrDog == 1)){ result.add(ope[dog.poll()][1]); } } } return result; }}
题目描述
有家动物收容所只收留猫和狗,但有特殊的收养规则,收养人有两种收养方式,第一种为直接收养所有动物中最早进入收容所的,第二种为选择收养的动物类型(猫或狗),并收养该种动物中最早进入收容所的。
给定一个操作序列int[][2] ope(C++中为vector<vector<int>>)代表所有事件。若第一个元素为1,则代表有动物进入收容所,第二个元素为动物的编号,正数代表狗,负数代表猫;若第一个元素为2,则代表有人收养动物,第二个元素若为0,则采取第一种收养方式,若为1,则指定收养狗,若为-1则指定收养猫。请按顺序返回收养的序列。若出现不合法的操作,即没有可以符合领养要求的动物,则将这次领养操作忽略。
测试样例:
[[1,1],[1,-1],[2,0],[2,-1]]
返回:[1,-1]
阅读全文
0 0
- 面试金典-猫狗问题
- 《程序员面试金典》猫狗收容所
- 《程序员面试金典》--狗猫收容所
- 【程序员面试金典】猫狗收容所
- 程序员面试金典——递归问题汇总
- 程序员面试金典——约瑟夫问题1
- 面试问题
- 面试问题
- 面试问题
- 面试问题
- 面试问题
- 面试问题
- 面试问题
- 面试问题
- 面试问题
- 面试问题
- 面试问题
- 面试问题
- 拓扑排序(C语言 邻接表)
- JNI转换通俗易懂的总结(C++调用java篇)
- RNN与LSTM原理
- Spark核心编程:共享变量(Broadcast Variable和Accumulator)
- Java设计模式-命令模式
- 面试金典-猫狗问题
- [实用教程]CESOFT_Windows Server 2012 R2 或 2016无法安装.Net 3.5.1
- Address already in use: JVM_Bind<null>:8080,Tomcat启动报错
- bootstrap-treeview 前台使用
- Node学习 -- 入门简介
- python笔记-006-字典
- js 必包和面向对象设计
- 递归分类
- 怎么样在WEB上实现office在线编辑的功能