关于用栈实现队列
老师,为什么在给出的解答当中还用到了Stack这个接口呢?可不可以用Deque这个接口?但如果用了Deque这个接口,本身就是一个双端队列,又怎么用来当做栈用呢?一下是我的实现方法,虽然也在leetcode跑过了,但感觉还是有问题。上次面试问到这个也是这么写的……
class MyQueue {
Deque<Integer> stack;
/** Initialize your data structure here. */
public MyQueue() {
stack = new ArrayDeque<>();
}
/** Push element x to the back of queue. */
public void push(int x) {
stack.offerLast(x);
}
/** Removes the element from in front of queue and returns that element. */
public int pop() {
return stack.pollFirst();
}
/** Get the front element. */
public int peek() {
return stack.peekFirst();
}
/** Returns whether the queue is empty. */
public boolean empty() {
return stack.isEmpty();
}
}19
收起
正在回答 回答被采纳积分+1
1回答
liuyubobobo
2020-10-13 15:12:00
这个问题是使用栈实现队列,所以使用 Stack 接口没有毛病啊。
如果你是指 Java 语言的 Stack 接口设计有问题,这个课程的这一小节专门介绍了这个问题:https://class.imooc.com/lesson/1579#mid=36155
Deque 是双端队列,只是用其中的一段入队和出队,就是栈。
继续加油!:)
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星