#include <stack> class Solution { public: void push(int value) { st.push(value); if (stmin.empty() || value <= stmin.top()) { stmin.push(value); } } void pop() { int value = st.top(); st.pop(); if (!stmin.empty() && value == stmin.top()) { stmin.pop(); } } int top() { return st.top(); } int min() { return stmin.top(); } private: stack<int> st; stack<int> stmin; };