IMWeb提升营Day4 | 训练题20:包含min函数的栈

来源:互联网 发布:林肯mac 编辑:程序博客网 时间:2024/06/05 04:43

题目描述

定义栈的数据结构,请在该类型中实现一个能够得到栈最小元素的min函数。
- 解读:实现一个栈,能够得到栈最小元素的min函数,要求复杂度为O(1)

思路

/* * 思路:用两个栈结构来完成这个功能,用一个栈data保存数据,用另外一个栈min保存依次入栈最小的数 * 比如,data中依次入栈,5,  4,  3, 8, 10, 11, 12, 1         则min依次入栈,5,  4,  3,no,no, no, no, 1  * no代表此次不入栈 * 每次入栈的时候,如果入栈的元素比min中的栈顶元素小或等于则入栈,否则不入栈。 */class Solution {public:    stack<int> dataStack;    stack<int> minStack;    void push(int value) {        dataStack.push(value);        if(minStack.empty()){            minStack.push(value);        }else{            if(minStack.top() > value){                minStack.push(value);            }        }    }    void pop() {        if(!minStack.empty() && minStack.top() == dataStack.top()){            minStack.pop();        }        dataStack.pop();    }    int top() {        return dataStack.top();    }    int min() {        return minStack.top();    }};