剑指offer第二十题【包含min函数的栈】c++实现

来源:互联网 发布:印度 巴基斯坦 知乎 编辑:程序博客网 时间:2024/06/02 04:15
包含min函数的栈

定义栈的数据结构,请在该类型中实现一个能够得到栈最小元素的min函数。

听了左神的讲解,才知道这题不是考察链表,考察设计。此题可以使用stl中的栈。

解法是 一个数据站 一个辅助栈

比如进栈顺序是 

4 5 3 5 2 2 6 5

辅助栈

4 x 3 x 2 2 x x

x代表不进栈

也比较好看出 辅助栈 的栈顶就是用来保存 数据站中的最小值的。

所以辅助栈只压入 小于等于当前最小值的数

出栈时,如果数据栈顶和辅助栈顶相同时,辅助栈才出栈。

<pre name="code" class="cpp">class Solution {public:    void push(int value) {        if(sta.empty()){            sta.push(value);            help.push(value);        }else{            sta.push(value);            if(value<=help.top()){                help.push(value);            }        }    }    void pop() {        if(sta.top()==help.top()){            help.pop();        }        sta.pop();    }    int top() {        return sta.top();    }    int min() {        return help.top();    }    stack<int> sta;    stack<int> help;};



0 0