题目描述:用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。
时间限制:1秒 空间限制:32768K
看了一下,推荐的方法和我的思路相近。
概念:
- 队列:先进先出。就像一条路,有一个入口和一个出口,先进去的就可以先出去。
- 栈:后进先出。就像一个箱子,后放的在上边,所以后进先出。
思路:第一个栈作为存储数据用的容器,第二个栈在弹出时作为将数据颠倒的容器,倒过来弹出后,再将剩余的数据压入第一个栈。
代码:
class Solution
{
public:
void push(int node) {
stack1.push(node);
}
int pop() {
while(!stack2.empty())
stack2.pop();
while(!stack1.empty()){
int cur = stack1.top();
stack1.pop();
stack2.push(cur);
}
int res = stack2.top();
stack2.pop();
while(!stack2.empty()){
int cur = stack2.top();
stack2.pop();
stack1.push(cur);
}
return res;
}
private:
stack<int> stack1;
stack<int> stack2;
};