题目描述
定义栈的数据结构,请在该类型中实现一个能够得到栈最小元素的min函数
思路:用一个辅助栈动态维护最小值
1 class Solution { 2 public: 3 void push(int value) { 4 _stack1.push(value); 5 if(_stack2.size()==0)_stack2.push(value); 6 else{ 7 if(value<=_stack2.top())_stack2.push(value);//如果入栈的元素比当前最小元素还小,则也入到辅助栈 8 } 9 } 10 void pop() { 11 if(_stack1.top()==_stack2.top())//如果出栈的是当前最小元素,则辅助栈也出栈 12 { 13 _stack1.pop(); 14 _stack2.pop(); 15 }else{ 16 _stack1.pop(); 17 } 18 } 19 int top() { 20 return _stack1.top(); 21 } 22 int min() { 23 return _stack2.top(); 24 } 25 private: 26 stack<int> _stack1; 27 stack<int> _stack2;//辅助栈 28 };