剑指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 };

 

posted @ 2019-10-14 21:50  自由之翼Az  阅读(93)  评论(0编辑  收藏  举报