剑指offer之包含min函数的栈
包含min函数的栈
https://www.nowcoder.com/practice/4c776177d2c04c2494f2555c9fcc1e49?tpId=13&&tqId=11173&rp=1&ru=/ta/coding-interviews&qru=/ta/coding-interviews/question-ranking
题目
定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的min函数(时间复杂度应为O(1))。
注意:保证测试中不会当栈为空的时候,对栈调用pop()或者min()或者top()方法。
思路
见代码
代码
class Solution { public: void push(int value) { m_data.push(value); if (m_min.empty() || value < m_min.top()) { m_min.push(value); } else { m_min.push(m_min.top()); } } void pop() { m_data.pop(); m_min.pop(); } int top() { return m_data.top(); } int min() { return m_min.top(); } private: stack<int> m_data; stack<int> m_min; };