push、pop的功能可以通过一个栈来解决,min的功能可以另一个栈来保存,栈里面存储的都是当前层到最底层的最小值,每次插入时都去比较插入较小值。
class Solution { public: void push(int value) { m_normal.push(value); if(m_min.empty()) { m_min.push(value); }else { if(value < m_min.top()) { m_min.push(value); }else { m_min.push(m_min.top()); } } } void pop() { if(!m_normal.empty()) m_normal.pop(); if(!m_min.empty()) m_min.pop(); } int top() { return m_normal.top(); } int min() { return m_min.top(); } private: stack<int> m_normal; stack<int> m_min; };