包含min函数的栈

来源:互联网 发布:安广网络电视 编辑:程序博客网 时间:2024/06/07 12:50

题目

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

思路

用两个栈,一个栈(st)正常的存储元素,另外一个栈(minStack)存储在对应的层次的时候当前最小的数值。
具体做法,st一直正常的压栈出栈,minStack在压栈的时候判断要压入元素和栈顶元素的大小,如果比栈顶元素小,则压入元素,否则压入栈顶元素,出栈的时候直接出栈顶元素即可。

参考代码

class Solution {public:    void push(int value) {        if (st.empty()) {            minStack.push(value);        } else {            if (value > minStack.top()) {                minStack.push(minStack.top());            } else {                minStack.push(value);            }        }        st.push(value);    }    void pop() {        st.pop();        minStack.pop();    }    int top() {        return st.top();    }    int min() {        return minStack.top();    }private:    stack<int> st;    stack<int> minStack;};
原创粉丝点击