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 { 5 s.push(x); 6 if(sMin.empty() || x <= sMin.top()) 7 sMin.push(x); 8 } 9 10 void pop() 11 {12 if(s.top() == sMin.top()){13 sMin.pop();14 }15 s.pop();16 }17 18 int top() 19 {20 return s.top();21 }22 23 int getMin() 24 {25 return sMin.top();26 }27 private:28 stack s;29 stack sMin;30 };