LeetCode题目:使用队列实现栈的下列操作:
push(x) -- 元素 x 入栈
pop() -- 移除栈顶元素
top() -- 获取栈顶元素
empty() -- 返回栈是否为空
思路:
/*入队列 add(e) offer(e)
出队列 remove() poll()
队首元素 element() peek()*/
public class MyStack {
private Queue<Integer> queue = new LinkedList<>();
public MyStack() {
}
public void push(int x) {
queue.add(x);
}
public int pop() {
for(int i = 0;i < queue.size() - 1;i++){
int tmp = queue.poll();
queue.add(tmp);
}
return queue.remove();
}
public int top() {
for(int i = 0;i < queue.size() - 1;i++){
int tmp = queue.remove();
queue.add(tmp);
}
int tmp = queue.poll();
queue.add(tmp);
return tmp;
}
public boolean empty() {
return queue.isEmpty() ;
}
}