题目:
今天这题更像是在考数据结构。只要想通一个栈作为输入栈一个栈作为输出栈就很简单。题解写的比我的代码精炼,我自己做的时候还反复倒腾这两个栈,看了题解发现根本没必要。
节省时间,这里就直接贴出代码了。最近在准备米哈游的实习面试,不知道能不能成功。
class MyQueue {
private:
stack<int> inStack, outStack;
void in2out() {//这个函数是让输入栈的元素导入输出栈
while (!inStack.empty()) {
outStack.push(inStack.top());
inStack.pop();
}
}
public:
MyQueue() {}
void push(int x) {
inStack.push(x);
}
int pop() {
if (outStack.empty()) {
in2out();
}
int x = outStack.top();
outStack.pop();
return x;
}
int peek() {
if (outStack.empty()) {
in2out();
}
return outStack.top();
}
bool empty() {
return inStack.empty() && outStack.empty();
}
};