题目描述
定义栈的数据结构,请在该类型中实现一个能够得到栈最小元素的min函数。
本来我是直接遍历寻找最小值,然后看了一下别人的,一个vector a存数据,一个vector b存当前的最小值,
比如b[5]就是a前6个数的最小值,这样求最小值时直接返回b.back()即可,优化了很多。
(这里就不贴出遍历的代码了)
class Solution { private: vector<int> stack; vector<int> mmin; public: void push(int value) { stack.push_back(value); if (mmin.size() == 0 || value < mmin.back()) mmin.push_back(value); else mmin.push_back(mmin.back()); } void pop() { stack.pop_back(); mmin.pop_back(); } int top() { return stack.back(); } int min() { return mmin.back(); } };