LeetCode---Min Stack

来源:互联网 发布:淘宝最毒的差评语贴吧 编辑:程序博客网 时间:2024/06/05 17:01

题目大意:实现一个栈,具备push(),pop(),top()操作,还能够在O(1)的时间内得到栈中最小的元素。

算法思想:

用STL中的vector来实现栈的push,pop,top操作,同时用一个栈用来记录当前最小元素,则栈顶元素即为栈中最小元素。

代码如下:

class MinStack {public:    void push(int x) {        if(s.size()==0&&min_value.size()==0)          min_value.push_back(x);        else           min_value.push_back(min(x,min_value.back()));        s.push_back(x);    }    void pop() {        if(s.size()==0&&min_value.size()==0)           return ;        s.pop_back();        min_value.pop_back();    }    int top() {        if(s.size()==0)           return -1;        return s.back();    }    int getMin() {        if(s.size()==0&&min_value.size()==0)          return -1;        return min_value.back();    }private:    vector<int> s;    vector<int> min_value;};


0 0
原创粉丝点击