【剑指offer】包含min函数的栈

题目链接:包含min函数的栈

 

题意:定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的min函数(时间复杂度应为O(1))。注意:保证测试中不会当栈为空的时候,对栈调用pop()或者min()或者top()方法。

 

题解:使用两个栈,一个用来存放数据,一个用来存储min。我们在入栈的时候就判断当前这个值是否是最小值。如果是就压到min。这样获得最小值的时候只需要读min的栈顶。

 

代码:

 1 class Solution {
 2 public:
 3     stack<int> data;//数据
 4     stack<int> ans;//min栈
 5     void push(int value) {
 6         data.push(value);
 7         if(ans.empty())    ans.push(value);
 8         if(ans.top() > value)    ans.push(value);
 9     }
10     void pop() {
11         if(data.top() == ans.top())    ans.pop();
12         data.pop();
13     }
14     int top() {
15         return data.top();
16     }
17     int min() {
18         return ans.top();
19     }
20 };

 

posted @ 2020-03-03 18:22  甜酒果。  阅读(89)  评论(0编辑  收藏  举报