155. Min Stack

Andreea
1 min readFeb 19, 2022

Design a stack that supports push, pop, top, and retrieving the minimum element in constant time.

Implement the MinStack class:

  • MinStack() initializes the stack object.
  • void push(val) pushes the element val onto the stack.
  • void pop() removes the element on the top of the stack.
  • int top() gets the top element of the stack.
  • int getMin() retrieves the minimum element in the stack.

Example 1:

Input
["MinStack","push","push","push","getMin","pop","top","getMin"]
[[],[-2],[0],[-3],[],[],[],[]]
Output
[null,null,null,null,-3,null,0,-2]
Explanation
MinStack minStack = new MinStack();
minStack.push(-2);
minStack.push(0);
minStack.push(-3);
minStack.getMin(); // return -3
minStack.pop();
minStack.top(); // return 0
minStack.getMin(); // return -2
class MinStack {
public:
/** initialize your data structure here. */
int t;
vector<int> v;

MinStack() {
v.clear();
t = -1;
}

void push(int val) {
v.push_back(val);
t++;
}

void pop() {
v.pop_back();
t--;
}

int top() {
return v[t];
}

int getMin() {
return *min_element(v.begin(), v.end());
}
};
/**
* 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();
*/

使用vector,但超慢的LOL

Runtime: 100 ms, faster than 8.70% of C++ online submissions for Min Stack.

Memory Usage: 16.2 MB, less than 99.04% of C++ online submissions for Min Stack.

--

--