2020-04-13

剑指offer编程题——栈

包含min函数的栈

思路:一个栈用来实现正常的栈操作,另一个栈保存当前栈的最小值

比如将5,7,6,3,9,1依次输入栈中

栈1: 5,7,6,3,9,1

栈2:5,3,1

栈2只用保存比当前栈顶元素小的元素,当执行出栈操作时,判断一下栈2的栈顶元素是否和栈1的出栈元素相同,若元素相同,则将栈2的栈顶元素出栈。

class Solution {

private:

    stack sk1;

    stack sk2;

    //用两个栈实现,一个栈实现正常的栈功能,另一个栈保存栈的当前最小值

public:

    void push(int value) {

        sk1.push(value);

        if(sk2.empty())

        { sk2.push(value);

        }

        else

        {

            if(value

            {

                sk2.push(value);

            }

        }

    }

    void pop() {

        if(!sk1.empty()&&!sk2.empty())

        {

            int top_val = sk1.top();

            sk1.pop();

            if(sk2.top()==top_val)

            {

                sk2.pop();

            }

        }

    }

    int top() {

        return sk1.top();

    }

    int min()

    { 

        return sk2.top();

    }

};

你可能感兴趣的:(2020-04-13)