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.
1 class MinStack { 2 public: 3 void push(int x) { 4 if(sta.size() == 0){ 5 sta.push(x); 6 min.push(x); 7 } 8 else{ 9 if(x <= min.top()) min.push(x); 10 sta.push(x); 11 } 12 } 13 14 void pop() { 15 if(min.top() == sta.top()){ 16 sta.pop(); 17 min.pop(); 18 } 19 else sta.pop(); 20 } 21 22 int top() { 23 return sta.top(); 24 } 25 26 int getMin() { 27 return min.top(); 28 } 29 private: 30 stack<int> sta; 31 stack<int> min; 32 };