一、题目


二、代码
//两种理解思路
//第一种 链表实现 相当于去实现底层
//第二种 用两个栈实现 相当于minstack 是stack的派生类 下面的写法是第二种
class MinStack
{
public:
stack<int> data;
stack<int> min_stack;
MinStack()
{
}
void push(int val) //小于才 push
{
if(min_stack.size()==0||val <=min_stack.top())
{
min_stack.push(val);
}
data.push(val);
}
void pop() //相等才 pop
{
if(data.top()==min_stack.top())
{
min_stack.pop();
}
data.pop();
}
int top() //常规返回
{
return data.top();
}
int getMin() //常规返回
{
return min_stack.top();
}
};
/**
* 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();
*/
三、运行结果

这篇博客介绍了如何使用两个栈来实现一个带有获取最小元素功能的栈。 MinStack 类包含 push、pop、top 和 getMin 方法,分别用于压入元素、弹出元素、获取栈顶元素和获取当前栈中的最小元素。代码中详细展示了这些方法的实现过程。
314

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



