需要实现栈的题目居然没有禁用stack?!那就直接用呗~那min函数就会麻烦点,因为stack不能用下标访问,所以要遍历栈中元素,就得把栈顶数据全都搬开,才能找到下一个元素,至于搬开来的元素嘛。。。肯定得存着吧?要是不存就把前面的数据全丢了,那可不行啊,所以就开了个栈用来储存搬开的元素(两次栈间传数据,反转两次,还是原来那样),而最后新开的那个栈必须清空,否则内存会泄露(被这个坑了一次)
class Solution {
public:
void push(int value) {
a.push(value);
}
void pop() {
a.pop();
}
int top() {
return a.top();
}
int min() {
stack<int> b;
int min=10000;
while(!a.empty()){
b.push(a.top());
if(a.top()<min){
min=a.top();
}a.pop();
}while(!b.empty()){
a.push(b.top());
b.pop();//清空元素,避免泄露
}
return min;
}
private:
stack<int> a;
};

京公网安备 11010502036488号