LeetCode OJ: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.
设计一个最小栈,使得返回栈中的最小数的这个操作的时间复杂度为常数,用双栈实现,一个栈作为最小数的保存栈,代码如下:
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<int> s; 29 stack<int> sMin; 30 };