题解 | 包含min函数的栈
包含min函数的栈
https://www.nowcoder.com/practice/4c776177d2c04c2494f2555c9fcc1e49?tpId=265&tqId=39232&rp=1&ru=/exam/oj/ta&qru=/exam/oj/ta&sourceUrl=%2Fexam%2Foj%2Fta%3Fpage%3D1%26tpId%3D13%26type%3D265&difficulty=undefined&judgeStatus=undefined&tags=&title=
class Solution { private: vector<int> MyStack; int topPtr; public: Solution():topPtr(-1){} void push(int value) { topPtr++; MyStack.push_back(value); } void pop() { if(topPtr!=-1){ MyStack.pop_back(); topPtr--; return; }else{ return; } } int top(){ if(topPtr!=-1){ return MyStack[topPtr]; }else{ //int可能最小值 return INT_MIN; } } //https://blog.nowcoder.net/n/7c2a97d1e266435381978d3b8410528f //官方题解中为把时间复杂度控制在O(1),必须保证每次push以及pop后都能得到min,用另一stack存储每个阶段的最小值 int min(){ // 使用 std::min_element 找到最小元素的迭代器 if(topPtr==-1){ return INT_MIN; } auto min_it = min_element(MyStack.begin(), MyStack.end()); return *min_it; } };