class MyQueue {
Stack<Integer> A;
Stack<Integer> B;
public MyQueue() {
A = new Stack<>();
B = new Stack<>();
}
public void push(int x) {
A.push(x);
}
public int pop() {
// 把A中的元素转移到B中
while (!A.empty()) {
B.push(A.pop());
}
// 对B进行pop
int res = B.pop();
// 在把元素转回去
while (!B.empty()) {
A.push(B.pop());
}
return res;
}
public int peek() {
// 把A中的元素转移到B中
while (!A.empty()) {
B.push(A.pop());
}
// 对B进行peek
int res = B.peek();
// 再把元素转回去
while (!B.empty()) {
A.push(B.pop());
}
return res;
}
public boolean empty() {
return A.empty();
}
}
class MyStack {
private Queue<Integer> a;//输入队列
private Queue<Integer> b;//输出队列
public MyStack() {
a = new LinkedList<>();
b = new LinkedList<>();
}
public void push(int x) {
a.add(x);
while (!b.isEmpty())a.add(b.poll());
Queue temp = a;
a = b;
b = temp;
}
public int pop() {
return b.poll();
}
public int top() {
return b.peek();
}
public boolean empty() {
return b.isEmpty();
}
}