本文主要是介绍动物收容所,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
题目链接
动物收容所
题目描述
注意点
- 若没有可以收养的动物,则返回[-1,-1]
- 收纳所的最大容量为20000
- 编号随着收养动物的增加自增
解答思路
- 利用队列先进先出的特点将猫和狗分别存进两个队列中,关键是dequeueAny这个方法中如果此时猫和狗的队列中都有元素则需要根据其编号选择相应的猫或狗
代码
class AnimalShelf {Deque<int[]> dogDq;Deque<int[]> catDq;public AnimalShelf() {dogDq = new ArrayDeque<>();catDq = new ArrayDeque<>();}public void enqueue(int[] animal) {if (animal[1] == 0) {catDq.offerLast(animal);}if (animal[1] == 1) {dogDq.offerLast(animal);}}public int[] dequeueAny() {if (dogDq.isEmpty() && catDq.isEmpty()) {return new int[]{-1, -1};}if (dogDq.isEmpty()) {return catDq.pollFirst();}if (catDq.isEmpty()) {return dogDq.pollFirst();}return catDq.peek()[0] > dogDq.peek()[0] ? dogDq.pollFirst() : catDq.pollFirst();}public int[] dequeueDog() {if (dogDq.isEmpty()) {return new int[]{-1, -1};}return dogDq.pollFirst();}public int[] dequeueCat() {if (catDq.isEmpty()) {return new int[]{-1, -1};}return catDq.pollFirst();}
}
关键点
- 编号随着收养动物的增加自增
- 注意边界问题
这篇关于动物收容所的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!