劍指offer____包含min函式的棧
阿新 • • 發佈:2018-11-11
定義棧的資料結構,請在該型別中實現一個能夠得到棧中所含最小元素的min函式(時間複雜度應為O(1))。
class Solution { public: void push(int value) { this->m_data.push(value); if(this->m_min.size() == 0 || value < m_min.top()) { m_min.push(value); } else { m_min.push(m_min.top()); } } void pop() { if(m_data.size() <= 0 && m_min.size() <= 0) return; m_data.pop(); m_min.pop(); } int top() { if(m_data.size() <= 0 && m_min.size() <= 0) return -1; return m_data.top(); } int min() { if(m_data.size() <= 0 && m_min.size() <= 0) return -1; return m_min.top(); } private: stack<int> m_data; //資料棧 stack<int> m_min; //輔助棧 };