包含min函数的栈
包含min函数的栈
https://www.nowcoder.com/practice/4c776177d2c04c2494f2555c9fcc1e49?tpId=13&tqId=11173&tPage=1&rp=1&ru=/ta/coding-interviews&qru=/ta/coding-interviews/question-ranking
思路:利用两个栈来模拟实现,一个栈用来模拟入栈,出栈,另一个栈用来记录最小值。
class Solution{ public: void push(int value) { st.push(value); if(smin.empty())//smin为空,则将st的值入栈 { smin.push(value); } if(smin.top()>value)//st入栈的值小于最小栈栈顶的值,将st入栈值push进smin,保持smin栈顶为最小值 { smin.push(value); } } void pop() { if(st.top()==smin.top())//如果二者栈顶值相等,在st出栈前,将smin出栈,更新最小值 { smin.pop(); } st.pop(); } int top() { return st.top(); } int min() { return smin.top(); } private: stack<int> st; stack<int> smin; };