剑指offer前面题目的难度还不是很大,两个栈,最麻烦也不过换来换去,找到想要的那个。只不过我们的任务是发觉其中的规律罢了,入栈的时候直接压到第一个栈去,出栈的时候从第二个栈出,如果第二个空了,就从第一个栈移过去。
代码如下:
class Solution
{
public:
void push(int node) {
stack1.push(node);
}
int pop() {
if(stack2.size()<=0){
while(stack1.size()>0){
int data = stack1.top();
stack1.pop();
stack2.push(data);
}
}
int head = stack2.top();
stack2.pop();
return head;
}
private:
stack<int> stack1;
stack<int> stack2;
};