实现一个带有取最小值min方法的栈,min方法将返回当前栈中的最小值。
你实现的栈将支持push。pop 和 min 操作,全部操作要求都在O(1)时间内完毕。
Yes
例子
例如以下操作:push(1),pop()。push(2),push(3)。min()。 push(1)。min() 返回 1。2,1
用了两个stack
class MinStack {
public:
stack<int> date;
stack<int> mins;
MinStack() {
// do initialization if necessary
}
void push(int number) {
// write your code here
date.push(number);
if (mins.size() ==0 || mins.top() >=number) {
mins.push(number);
}
else {
mins.push(mins.top());
}
}
int pop() {
// write your code here
if (mins.size()>0 && date.size() > 0) {
int t = date.top();
date.pop();
mins.pop();
return t;
}
return 0;
}
int min() {
// write your code here
if (mins.size()>0 && date.size() > 0)
return mins.top();
return 0;
}
};