剑指offer——30包含min函数的栈
题目描述
定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的min函数(时间复杂度应为O(1))。
题解:
借助辅助栈,新的数据<=f辅助栈顶时,就压入辅助栈,这样,就能保证辅助找栈顶永远是最小数。
1 class Solution { 2 public: 3 void push(int value) { 4 dataS.push(value); 5 if (dataMin.empty() || dataMin.top() >= value) 6 dataMin.push(value); 7 } 8 void pop() { 9 if (dataS.top() == dataMin.top()) 10 dataMin.pop(); 11 dataS.pop(); 12 } 13 int top() { 14 return dataS.top(); 15 } 16 int min() { 17 return dataMin.top(); 18 } 19 private: 20 stack<int>dataS, dataMin; 21 };