构造一个栈,使最小值操作复杂度为O(1)。
//mins中最小值位置以上元素全部为最小值。
class Solution {
public:
void push(int value) {
st.push(value);
if (mins.empty() || value < mins.top()) mins.push(value);
else mins.push(mins.top());
}
void pop() {
st.pop();
mins.pop();
}
int top() {
return st.top();
}
int min() {
return mins.top();
}
private:
stack<int> st;
stack<int> mins;
};