加入队尾 push() : 将数字 val 加入栈 A 。获取队首元素 peek() :当栈 B 不为空: B中仍有已完成倒序的元素,直接返回 B 的栈顶元素。否则当 A 为空: 即两个栈都为空,无元素,返回 -1 。否则 将栈 A 元素全部转移至栈 B 中,实现元素倒序,并返回栈 B 的栈顶元素。弹出队首元素 pop() :执行 peek() ,获取队首元素。弹出 B 的栈顶元素。队列判空 empty() : 当栈 A 和 B 都为空时,队列为空。
class MyQueue {
private:
std::stack<int> A, B;
public:
MyQueue() {}
void push(int x) {
A.push(x);
}
int pop() {
int peek = this->peek();
B.pop();
return peek;
}
int peek() {
if (!B.empty()) return B.top();
if (A.empty()) return -1;
while (!A.empty()){
B.push(A.top()), A.pop();
}
int res = B.top();
return res;
}
bool empty() {
return A.empty() && B.empty();
}
};