1.题目链接
2.解题思路
利用两个栈实现
3.代码
class MinStack {
public:
MinStack() {
//两个栈来实现
}
void push(int val) {
_st.push(val);
if (_minst.empty() || _minst.top() >= val)
{
_minst.push(val);
}
}
void pop() {
if (_st.top() == _minst.top())
_minst.pop();
_st.pop();
}
int top() {
return _st.top();
}
int getMin() {
return _minst.top();
}
stack<int> _st;
stack<int> _minst;
};
4.运行结果

【C++ OJ练习】9.最小栈 完
本文介绍了如何使用C++编程语言实现一个数据结构——最小栈。该栈通过维护两个辅助栈,在常数时间内完成push、pop、top以及获取当前栈中最小元素的操作。解题思路是每次push时比较新元素与当前最小栈顶元素,若更小则将新元素压入最小栈。pop时,如果弹出的元素与最小栈顶元素相同,则也从最小栈弹出。
4016

被折叠的 条评论
为什么被折叠?



