您的位置:首页 > Web前端

包含min函数的栈

2016-06-18 10:59 274 查看
题目:包含min函数的栈

思路:这个问题的解决方法很多,这里举出一种比较好理解的方法,即使用两个栈实现。

5
1
4
2
3
mystack
1
1
2
2
3
minstack

minstack的存放规则是:如果找到一个最小值,则将该值放入栈中,下一次push的值和他进行对比,若比它大,则仍然压入该栈顶的值,否则压入新的较小值。

这样做的好处是,每次弹出时,将会很容易操作。

class Solution {

public:

    void push(int value) {

        mystack.push(value);

        if(minstack.empty()){

            minstack.push(value);

        }

        else if(minstack.top()>value){

            minstack.push(value);

        }

        else{

            int temp=minstack.top();

            minstack.push(temp);

        }

    }

    void pop() {

        mystack.pop();

        minstack.pop();

    }

    int top() {

        return mystack.top();

    }

    int min() {

        return minstack.top();

    }

private:

    stack<int> mystack;

    stack<int> minstack;

};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  剑指offer