• 155. 最小栈


    155. 最小栈

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

    实现 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
    • poptopgetMin 操作总是在 非空栈 上调用
    • pushpoptop, and getMin最多被调用 3 * 104 次

    解析:

    当前最小值用个dp就ok了

    class MinStack {
    public:
        vector<int> stack;
        int dp[30010];
        int cnt;
        MinStack() {
            for(int i = 0;  i < 30010; i++)
                dp[i] = 0x7fffffff;
            cnt = -1;
        }
        
        void push(int val) {
            stack.push_back(val);
            ++cnt;
            if(cnt > 0)
                dp[cnt] = min(dp[cnt - 1], val);
            else dp[cnt] = val;
            
        }
        
        void pop() {
            stack.pop_back();
            dp[cnt] = 0x7fffffff;
            --cnt;
    
        }
        
        int top() {
            return stack[stack.size() - 1];
        }
        
        int getMin() {
            return dp[cnt];
        }
    };
    
    /**
     * 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();
     */
  • 相关阅读:
    基元线程同步构造之用户模式易变构造volatile
    C# 基元线程同步构造
    idea 的Low Memory问题
    python工具——xmind
    VSCODE 远程开发树莓派
    firefox临时文件位置及修改方法
    Veeam Backup & Replication 9.5 备份方式详解
    Windows下登录凭证密码获取工具
    VMProtect虚拟机保护分析入门
    Applescrip
  • 原文地址:https://www.cnblogs.com/WTSRUVF/p/16725923.html
Copyright © 2020-2023  润新知