描述
实现一个带有取最小值min方法的栈,min方法将返回当前栈中的最小值。
你实现的栈将支持push,pop 和 min 操作,所有操作要求都在O(1)时间内完成。
注意事项
如果堆栈中没有数字则不能进行min方法的调用
样例
如下操作:push(1),pop(),push(2),push(3),min(), push(1),min() 返回 1,2,1
代码
#include<stack>
class MinStack {
public:
/*
* @param a: An integer
*/
//两个栈:date:普通栈 mins:存每次向date栈push的值的最小值
stack<int> date;
stack<int> mins;
MinStack() {
// do intialization if necessary
//list.push_back(a);
}
/*
* @param number: An integer
* @return: nothing
*/
void push(int number) {
// write your code here
date.push(number);
if(mins.size()==0||mins.top()>=number){
mins.push(number);
}
}
/*
* @param a: An integer
* @return: An integer
*/
int pop() {
// write your code here
int top=date.top();
if(top==mins.top()){
mins.pop();
}
date.pop();
return top;
}
/*
* @param a: An integer
* @return: An integer
*/
int min() {
// write your code here
return mins.top();
}
};