带最小值操作的栈

来源:互联网 发布:广联达软件官方售价 编辑:程序博客网 时间:2024/05/19 13:09

问题:

实现一个带有取最小值min方法的栈,min方法将返回当前栈中的最小值。

你实现的栈将支持pushpopmin 操作,所有操作要求都在O(1)时间内完成。

解法:

该题的解法是设置一个用于存储当前最小元素的辅助栈。

class MinStack {public:    MinStack() {        // do initialization if necessary        while(!minnum.empty()){            minnum.pop();        }                while(!data.empty()){            data.pop();        }    }    void push(int number) {        // write your code here        if(data.empty()){            data.push(number);            minnum.push(number);        }else{            int tmp = minnum.top();            data.push(number);            if(number < tmp){                minnum.push(number);            }else{                minnum.push(tmp);            }                    }    }    int pop() {        // write your code here        int tmp = data.top();        data.pop();        minnum.pop();        return tmp;    }    int min() {        // write your code here        int tmp = minnum.top();        return tmp;    }    private://存储当前最小元素和所有入栈元素的栈    stack<int> minnum;    stack<int> data;};


0 0
原创粉丝点击