题目描述
定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的min函数(时间复杂度应为O(1))。
AC C++ Solution:
使用两个栈,一个栈保存栈的最小元素,一个栈正常保存元素.
class Solution {
public:
void push(int value) {
stackInt.push(value);
if(stackMin.empty() || (value <= stackMin.top()) )
stackMin.push(value);
}
void pop() {
if(stackInt.top() == stackMin.top()) //弹出元素若是最小元素,则最小栈也弹出
stackMin.pop();
stackInt.pop();
}
int top() {
return stackInt.top();
}
int min() {
return stackMin.top();
}
private:
stack<int> stackInt;
stack<int> stackMin;
};