LeetCode HOT100 - 最小栈
栈如果用 vector 去模拟的话实际上也是往一个数组的末尾不断插入元素
如果出栈的话也就是删除末尾的元素
因此这题的目的实际上就是访问数组的前缀最小值,而且不会有修改操作
于是只要在每次添加元素的时候记录此时的最小值即可
采用两个 stack 或者 stack 内存储的是 pair 之类的类型均可行
#include<bits/stdc++.h>
class MinStack {
stack<array<int, 2>> st;
public:
MinStack() {
st.push({0, INT_MAX});
}
void push(int val) {
st.push({val, min(st.top()[1], val)});
}
void pop() {
st.pop();
}
int top() {
return st.top()[0];
}
int getMin() {
return st.top()[1];
}
};
/**
* Your MinStack object will be instantiated and called as such:
* MinStack* obj = new MinStack();
* obj->push(val);
* obj->pop();
* int param_3 = obj->top();
* int param_4 = obj->getMin();
*/

浙公网安备 33010602011771号