题目描述:设计一个支持 push ,pop ,top 操作,并能在常数时间内检索到最小元素的栈。
实现 MinStack 类:
MinStack()
初始化堆栈对象。void push(int val)
将元素val推入堆栈。void pop()
删除堆栈顶部的元素。int top()
获取堆栈顶部的元素。int getMin()
获取堆栈中的最小元素。
方法1:使用两个栈,一个常规栈,一个不断记录插入最小元素的栈
public:
stack<int>stk;
stack<int>min;//存放最小值的栈
MinStack() {
}
void push(int val) {
stk.push(val);
if(min.empty()) min.push(val);
else{
if(val <= min.top()) min.push(val);
}
}
void pop() {
if(stk.top() == min.top()) min.pop();
stk.pop();
}
int top() {
return stk.top();
}
int getMin() {
return min.top();
}
};