题目描述
定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的min函数(时间复杂度应为O(1))。
思路
用一个栈minStack来更新当前数据的最小值,minStack永远为当前数据的最小值。当删除和插入时,同时更新minStack即可。
具体分析可见我另外一篇博客:https://blog.csdn.net/songsong2017/article/details/86714034
代码
class Solution {
public:
void push(int value) {
s.emplace(value);
if (help.empty() || value <= help.top()) help.emplace(value);
else help.emplace(help.top());
}
void pop() {
s.pop();
help.pop();
}
int top() {
return s.top();
}
int min() {
return help.top();
}
stack<int> s;
stack<int> help;
};