思路:
假设存在两个栈stack1、stack2,可以这样认为:
stack2中保存的为【队列的前部分元素】,可以认为 其栈顶值 = 队列头部值。
stack1中的元素为【未经转换的队列后部分元素】,相当于buffer一样的存在,它其实就是队列中后部分元素逆序的结果。因此需要将其元素全部投入到stack2中,这样完成翻转过程。
画图如下:
| <---- 队列 ----> |
| <- 栈2 -> | <- 栈1 -> |
| 和队列顺序一致 | 和队列顺序相反 |
class Solution
{
public:
void push(int node) {
stack1.push(node);
}
int pop() {
if (stack2.size() == 0)
{
while ( !stack1.empty())
{
stack2.push(stack1.top());
stack1.pop();
}
}
int value = stack2.top();
stack2.pop();
return value;
}
private:
stack<int> stack1;
stack<int> stack2;
};