一、题目
二、代码
//两种理解思路
//第一种 链表实现 相当于去实现底层
//第二种 用两个栈实现 相当于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();
*/