题目
思路
push
操作:把数据正常插入到stack1
中
pop
操作:是把stack1
中的数据全部导入到stack2
中以后再弹出stack2
的头部,因此
- 如果
stack2
不空就直接弹出stack2
的栈顶元素 - 否则就先把
stack1
的元素导入过来
模拟一下就清楚了
代码
class Solution {
public:
void push(int node) {
stack1.push(node);
}
int pop() {
int ret;
if (stack2.empty()) {
while (!stack1.empty()) {
stack2.push(stack1.top());
stack1.pop();
}
ret = stack2.top();
stack2.pop();
} else {
ret = stack2.top();
stack2.pop();
}
return ret;
}
private:
stack<int> stack1;
stack<int> stack2;
};
其他
力扣还有用队列实现栈,最好用C写一遍。