在做leetcode这道用队列实现栈问题题的时候
class MyStack {
Queue<Integer> queue;
public MyStack() {
queue = new LinkedList<>();
}
public void push(int x) {
queue.add(x);
}
public int pop() {
int size = queue.size();
size--;
while(size-->0){
queue.add(queue.poll());
}
return queue.poll();
}
public int top() {
int size = queue.size();
size--;
while(size-->0){
queue.add(queue.poll());
}
** int result = queue.poll();
queue.add(result);
return result;**
// int result = queue.peek();
// return result;
//为什么只使用return queue.peek()不对?
}
public boolean empty() {
return queue.size()==0;
}
}
使用** int result = queue.poll();
queue.add(result);
return result;**得到的结果就是正确的
["MyStack","push","push","top","pop","empty"]
[[],[1],[2],[],[],[]]
输出
[null,null,null,2,2,false]
预期结果
[null,null,null,2,2,false]
使用
// int result = queue.peek();
// return result;
得到的结果:
输入
["MyStack","push","push","top","pop","empty"]
[[],[1],[2],[],[],[]]
输出
[null,null,null,2,1,false]
预期结果
[null,null,null,2,2,false]
想请问为什么?我只是获得顶端的元素,以上两种方式获得的元素应该是一样的,为什么会有错呢?是因为我没把队列返回成原样导致后续放进去不正确的问题吗?