题目链接:https://leetcode.com/problems/min-stack/
Design a stack that supports push, pop, top, and retrieving the minimum element in constant time.
- push(x) -- Push element x onto stack.
- pop() -- Removes the element on top of the stack.
- top() -- Get the top element.
- getMin() -- Retrieve the minimum element in the stack.
Example:
MinStack minStack = new MinStack(); minStack.push(-2); minStack.push(0); minStack.push(-3); minStack.getMin(); --> Returns -3. minStack.pop(); minStack.top(); --> Returns 0. minStack.getMin(); --> Returns -2.
class MinStack{
public:
vector<int> res;
vector<int> min;
void push(int x)
{
res.push_back(x);
if(min.empty()||x<=min.back())
min.push_back(x);
}
void pop()
{
if(!res.empty())
{
if(res.back()==min.back())
{
res.pop_back();
min.pop_back();
}
else
res.pop_back();
}
}
int top()
{
if(!res.empty())
return res.back();
return 0;
}
int getMin()
{
if(!min.empty())
return min.back();
return 0;
}
};