LeetCode 232 用栈实现队列
题目链接:LeetCode 232 用栈实现队列
题目大意:
题解:
将一个栈当作输入栈,用于压入\(push\)传入的数据;另一个栈当作输出栈,用于\(pop\)和\(peek\)操作。
每次\(pop\)或\(peek\)时,若输出栈为空则将输入栈的全部数据依次弹出并压入输出栈,这样输出栈从栈顶往栈底的顺序就是队列从队首往队尾的顺序。
class MyQueue {
private:
stack<int> inStack, outStack;
void inToOut() {
while (!inStack.empty()) {
outStack.push(inStack.top());
inStack.pop();
}
}
public:
MyQueue() {}
void push(int x) {
inStack.push(x);
}
int pop() {
if (outStack.empty()) {
inToOut();
}
int x = outStack.top();
outStack.pop();
return x;
}
int peek() {
if (outStack.empty()) {
inToOut();
}
return outStack.top();
}
bool empty() {
return inStack.empty() && outStack.empty();
}
};