标签:
Design a stack that supports push, pop, top, and retrieving the minimum element in constant time.
设计一个最小栈,使得返回栈中的最小数的这个操作的时间复杂度为常数,用双栈实现,一个栈作为最小数的保存栈,代码如下:
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 };
标签:
原文地址:http://www.cnblogs.com/-wang-cheng/p/5014376.html