问题:
解题:
分析:添加到队列不需要条件直接添加,获取的时候需要判断内容,最简单的就是获取迭代器,然后判断第一个,可以符合条件就移除,双向链表比较符合要求,直接用LinkedLIst
class AnimalShelf {
private LinkedList<int[]> list;
public AnimalShelf() {
list = new LinkedList<>();
}
public void enqueue(int[] animal) {
list.addLast(animal);
}
public int[] dequeueAny() {
if (list.size() < 1) {
return new int[]{-1, -1};
}
return list.removeFirst();
}
public int[] dequeueDog() {
return dequeueBy(1);
}
public int[] dequeueCat() {
return dequeueBy(0);
}
public int[] dequeueBy(int an) {
if (list.size() < 1) {
return new int[]{-1, -1};
}
ListIterator<int[]> listIterator = list.listIterator();
while (listIterator.hasNext()) {
int[] next = listIterator.next();
if (next[1] == an) {
listIterator.remove();
return next;
}
}
return new int[]{-1, -1};
}
}
性能:
速度还是不够啊