class MinStack {
public:
/** initialize your data structure here. */
stack<int> m_data;
stack<int> m_min;
MinStack() {}
//思路:两个栈,一个正常压数据,一个只压最小数据
//m_min每次压数据时候都要判断是否比当前栈顶数据小
//如果小直接压,如果大,将自身的栈顶数据再压一次
void push(int x) {
m_data.push(x);
if(m_min.size() == 0 || x < m_min.top())
{
m_min.push(x);
}
else
m_min.push(m_min.top());
}
void pop() {
assert(m_min.size()>0 && m_data.size()>0);
m_data.pop();
m_min.pop();
}
int top() {
assert(m_min.size()>0 &&m_data.size()>0);
return m_data.top();
}
int min() {
assert(m_min.size()>0 &&m_data.size()>0);
return m_min.top();
}
};
LeetCode--剑指 Offer 30包含min函数的栈
最新推荐文章于 2022-08-12 11:25:27 发布