需要实现栈的题目居然没有禁用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; };