min函数的作用是实时找出栈中的最小值,但同时题目要求的时间复杂度为O(1),所以min函数不能对栈中数据进行遍历。本文是通过额外设置一个min栈存储最小值来解决这个问题。
1.在数据放入栈中时,将最小值放入min栈中;
2.数据出栈时,如果是最小值出栈,则将min栈里的值也出栈。
class Solution {
public:
stack<int> temp,mins;
void push(int value) {
temp.push(value);
if(mins.empty ()||value<mins.top())
mins.push(value);
}
void pop() {
if(temp.top()<=mins.top())
mins.pop();
temp.pop();
}
int top() {
return temp.top();
}
int min() {
return mins.top();
}
};