• 【力扣 005】155. 最小栈


    155. 最小栈

    设计一个支持 push ,pop ,top 操作,并能在常数时间内检索到最小元素的栈。

    实现 MinStack 类:

    MinStack() 初始化堆栈对象。
    void push(int val) 将元素val推入堆栈。
    void pop() 删除堆栈顶部的元素。
    int top() 获取堆栈顶部的元素。
    int getMin() 获取堆栈中的最小元素。
     

    示例 1:

    输入:
    ["MinStack","push","push","push","getMin","pop","top","getMin"]
    [[],[-2],[0],[-3],[],[],[],[]]

    输出:
    [null,null,null,null,-3,null,0,-2]

    解释:
    MinStack minStack = new MinStack();
    minStack.push(-2);
    minStack.push(0);
    minStack.push(-3);
    minStack.getMin();   --> 返回 -3.
    minStack.pop();
    minStack.top();      --> 返回 0.
    minStack.getMin();   --> 返回 -2.
     

    提示:

    -231 <= val <= 231 - 1
    pop、top 和 getMin 操作总是在 非空栈 上调用
    push, pop, top, and getMin最多被调用 3 * 104 次

    来源:力扣(LeetCode)
    链接:https://leetcode.cn/problems/min-stack
    著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

    代码实现:

    class MinStack {
    public:
        MinStack() {
            getmin = INT_MAX;
        }
        
        void push(int val) {
            st.push(val);
            getmin = min(getmin, val);
        }
        
        void pop() {
            if(st.top() == getmin)
            {
                st.pop();
                getmin = INT_MAX;
                stack<int> temp;
                while(!st.empty())
                {
                    temp.push(st.top());
                    getmin = min(getmin, st.top());
                    st.pop();
                }
                while(!temp.empty())
                {
                    st.push(temp.top());
                    temp.pop();
                }
            }
            else
                st.pop();
        }
        
        int top() {
            return st.top();
        }
        
        int getMin() {
            return getmin;
        }
        int getmin;
        stack<int> st;
    };
    
    /**
     * Your MinStack object will be instantiated and called as such:
     * MinStack* obj = new MinStack();
     * obj->push(val);
     * obj->pop();
     * int param_3 = obj->top();
     * int param_4 = obj->getMin();
     */
  • 相关阅读:
    javascript进阶一
    javascript基础
    前端开发工程师——网易云课堂
    win10,软件, 发布者不受信任怎么办
    oracle10g如何配置客户端
    ASPxGridView中DetailRow的使用
    vb中&和+的区别
    nvl
    substr
    ORA-01791: 不是 SELECTed 表达式
  • 原文地址:https://www.cnblogs.com/sunbines/p/15933524.html
Copyright © 2020-2023  润新知