155. Min Stack

来源:互联网 发布:中国软件杯优秀奖 编辑:程序博客网 时间:2024/06/04 01:39
//超时class MinStack {public:    /** initialize your data structure here. */    vector<int> v;    list<int> l;    //int locat=0;    MinStack() {    }    void push(int x) {        //cout<<x<<"  ";        v.push_back(x);        list<int>::iterator i;        for(i=l.begin();i!=l.end();i++)        {            if((*i)>x)            {                l.insert(i,x);                break;            }        }        if(i==l.end()) l.insert(i,x);    }    void pop() {        int a=v[v.size()-1];        for(auto i=l.begin();i!=l.end();i++)        {            if((*i)==a)            {                l.erase(i);                break;            }        }                v.pop_back();    }    int top() {        return v[v.size()-1];    }    int getMin() {        //for(int i:l) cout<<i<<" ";        return *l.begin();    }};/** * Your MinStack object will be instantiated and called as such: * MinStack obj = new MinStack(); * obj.push(x); * obj.pop(); * int param_3 = obj.top(); * int param_4 = obj.getMin(); */
//818msclass MinStack {public:    /** initialize your data structure here. */    vector<int> v;    int my_min;    MinStack() {    }    void push(int x) {        if(v.empty()||x<my_min) my_min=x;        v.push_back(x);    }    void pop() {        int a=v[v.size()-1];        v.pop_back();        if(a==my_min&&v.size()!=0)        {            my_min=v[0];            for(int i=0;i<v.size();i++)            {                my_min=min(my_min,v[i]);            }        }    int top() {        return v[v.size()-1];    }    int getMin() {        return my_min;    }};/** * Your MinStack object will be instantiated and called as such: * MinStack obj = new MinStack(); * obj.push(x); * obj.pop(); * int param_3 = obj.top(); * int param_4 = obj.getMin(); */
class MinStack {public:    /** initialize your data structure here. */    vector<int> v;    vector<int> mins;    MinStack() {    }    void push(int x) {        v.push_back(x);        if(!mins.empty()&&mins.back()<x)         {            mins.push_back(mins.back());        }        else mins.push_back(x);    }    void pop() {        v.pop_back();        mins.pop_back();    }    int top() {        return v.back();    }    int getMin() {        return mins.back();    }};
0 0
原创粉丝点击