关于用栈实现队列
老师,为什么在给出的解答当中还用到了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 星