题解 | #包含min函数的栈#
包含min函数的栈
https://www.nowcoder.com/practice/4c776177d2c04c2494f2555c9fcc1e49
基本思路:维护两个栈,一个栈正常进出,一个栈单调递减,如果当前push的值大于top,则直接push top值而不是当前push的值。
优化思路:维护一个栈,每次push时同时push当前最小值与当前值两次即可。为了避免频繁操作取最小值,用int变量记录当前的最小值。
class Solution {
public:
stack<int> st;
int mn = INT_MAX;
void push(int value) {
if (value < mn) mn = value;
st.push(mn);
st.push(value);
}
void pop() {
st.pop();
st.pop();
int tmp = st.top();
st.pop();
mn = st.top();
st.push(tmp);
}
int top() {
return st.top();
}
int min() {
return mn;
}
};
查看16道真题和解析

曼迪匹艾公司福利 94人发布