leetcode_155_Min Stack(C++)(easy)

来源:互联网 发布:开源旅游cms 编辑:程序博客网 时间:2024/05/22 05:25

Design a stack that supports push, pop, top, and retrieving the minimum element in constant time.

  • push(x) -- Push element x onto stack.
  • pop() -- Removes the element on top of the stack.
  • top() -- Get the top element.

  • getMin() -- Retrieve the minimum element in the stack.

    Example:

    MinStack minStack = new MinStack();minStack.push(-2);minStack.push(0);minStack.push(-3);minStack.getMin();   --> Returns -3.minStack.pop();minStack.top();      --> Returns 0.minStack.getMin();   --> Returns -2.
  • 思路:参考剑指offer的面试题21:包含min函数的栈
  • 分别定义两个栈,一个数据栈,一个最小值栈,这里我们运用vector容器来模拟。在每一次push过程中,数据栈中都会压入该数据,如果该数小于最小值栈顶元素,则压入,否则将最小值栈顶元素再压入最小值栈。每一次pop的过程,分别从两个栈弹出栈顶元素
  • class MinStack {private:    int count;    vector<long long> num;    vector<long long> min;    public:    /** initialize your data structure here. */    MinStack() {        count = 0;    }        void push(int x) {        num.push_back(x);        if(count == 0)            min.push_back(x);        else        {            long long new_min = min[count - 1] < x ? min[count - 1] : x;            min.push_back(new_min);        }        ++count;    }        void pop() {        num.pop_back();        min.pop_back();        --count;    }        int top() {        if(count > 0)            return num[count - 1];        else             return false;    }        int getMin() {        if(count > 0)            return min[count - 1];        else             return false;    }};/** * 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(); */

0 0
原创粉丝点击