1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46
| class MinStack { public: MinStack() { topEle = nullptr; } void push(int val) { if(!topEle) topEle = new Node(val, val); else topEle = new Node(val, min(topEle->min, val), topEle); } void pop() { auto tmp = topEle; topEle = tmp->next; delete tmp; } int top() { return topEle->val; } int getMin() { return topEle->min; } private: struct Node { int val; int min; Node* next; Node () : val(0), min(INT_MAX), next(nullptr) {} Node (int val, int min) : val(val), min(min), next(nullptr) {} Node (int val, int min, Node* next) : val(val), min(min), next(next) {} }; Node* topEle; };
|