自己用了个笨方法
class Solution
{
public:
void push(int node) {
stack1.push(node);
}
int pop() {
int num;
int siz = stack1.size();//!!!
for(int i = 1; i < siz; ++i){
stack2.push(stack1.top());
stack1.pop();
}
num = stack1.top();
stack1.pop();
for(int i = 0; i < stack2.size(); ++i){
stack1.push(stack2.top());
stack2.pop();
}
return num;
}
private:
stack<int> stack1;
stack<int> stack2;
};
这里必须要注意,需要用siz把stack1的大小先记录下来,不然的话每次pop都会变化!
另一种更好的,搬动数据次数更少的方法:
#include <iostream>
#include<stack>
using namespace std;
class Solution
{
public:
void push(int node) {
stack1.push(node);
}
int pop() {
int num;
if(stack2.empty()){
while(!stack1.empty()){
stack2.push(stack1.top());
stack1.pop();}
}
num = stack2.top();
stack2.pop();
return num;
}
private:
stack<int> stack1;
stack<int> stack2;
};
int main()
{
Solution s;
s.push(1);
s.push(2);
s.push(3);
cout << s.pop();
return 0;
}